From owner-freebsd-doc@FreeBSD.ORG Sun Jan 13 21:44:24 2013 Return-Path: Delivered-To: freebsd-doc@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 3B004143 for ; Sun, 13 Jan 2013 21:44:24 +0000 (UTC) (envelope-from wblock@wonkity.com) Received: from wonkity.com (wonkity.com [67.158.26.137]) by mx1.freebsd.org (Postfix) with ESMTP id 8E604E79 for ; Sun, 13 Jan 2013 21:44:23 +0000 (UTC) Received: from wonkity.com (localhost [127.0.0.1]) by wonkity.com (8.14.6/8.14.6) with ESMTP id r0DLiMY2018629; Sun, 13 Jan 2013 14:44:22 -0700 (MST) (envelope-from wblock@wonkity.com) Received: from localhost (wblock@localhost) by wonkity.com (8.14.6/8.14.6/Submit) with ESMTP id r0DLiLOa018626; Sun, 13 Jan 2013 14:44:22 -0700 (MST) (envelope-from wblock@wonkity.com) Date: Sun, 13 Jan 2013 14:44:21 -0700 (MST) From: Warren Block To: "Simon L. B. Nielsen" Subject: Re: freebsd-update and ports In-Reply-To: Message-ID: References: User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="3512871622-1184402412-1358107748=:17568" Content-ID: X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (wonkity.com [127.0.0.1]); Sun, 13 Jan 2013 14:44:22 -0700 (MST) Cc: freebsd-doc@freebsd.org X-BeenThere: freebsd-doc@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Documentation project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 13 Jan 2013 21:44:24 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --3512871622-1184402412-1358107748=:17568 Content-Type: TEXT/PLAIN; FORMAT=flowed; CHARSET=ISO-8859-15 Content-Transfer-Encoding: 8BIT Content-ID: On Sun, 13 Jan 2013, Simon L. B. Nielsen wrote: > On 13 Jan 2013 05:24, "Warren Block" wrote: > > > > Looking for some feedback from someone more familiar with freebsd-update(8) and ports. > > > >   Define minor and major version upgrades at the start of the section. > > In the text you call it minor and major upgrades. I think that is misleading and should be written out as major version upgrades and minor version upgrades, as a minor version upgrade > can still begin problematic and a major version upgrade can be a small thing. That was the section title originally, but agreed. > >   Say that installed applications will generally still run after a minor > >   upgrade. > > I would say there is a bug if it doesn't work, but of course its always a risk and there are special cases... > > -      &prompt.root; portupgrade -af > > +      Major upgrades are when &os is > > Missing ; on entity. Doh. Entity checking is even on the list of things that igor should do but does not. > > +         > > +           Assuming physical access to the machine is possible, a > > +             copy of the GENERIC kernel can be > > +             installed from the CD-ROM media.  Insert your installation > > +             disc and use the following commands: > > + > > +           &prompt.root; mount /cdrom > >  &prompt.root; cd /cdrom/X.Y-RELEASE/kernels > >  &prompt.root; ./install.sh GENERIC > > This is only correct for FreeBSD 8 and older. For 9..0 onwards other is a tgz in /usr/freebsd-dist . Fixing that involved rewriting that section. I have done that, but this has gone from minor patch to big update. The new section on 9.X and higher GENERIC kernel has literal tags on GENERIC, because it's not a directory any more. Except when GENERIC refers to the kernel config, when it is a file. The procedure needs to be verified, and maybe there's a simpler or better way to copy the kernel file. The two custom kernel sections meant new sect3 and sect4 sections, and consequent indentation changes to a bunch of the rest of this. That said, it's better than it was. Index: cutting-edge/chapter.xml =================================================================== --- cutting-edge/chapter.xml (revision 40616) +++ cutting-edge/chapter.xml (working copy) @@ -352,15 +352,23 @@ - Major and Minor Upgrades + Major and Minor Version Upgrades - This process will remove old object files and + Upgrades from one minor version of &os; to another, like + from &os; 9.0 to &os; 9.1, are called + minor version upgrades. Generally, + installed applications will continue to work without problems + after minor version upgrades. + + Major version upgrades are when &os; + is upgraded from one major version to another, like from + &os; 8.X to &os; 9.X. Major version upgrades will remove old object files and libraries which will break most third party applications. It is recommended that all installed ports either be removed - and re-installed or upgraded later using the + and re-installed or upgraded after a major version upgrade by using the ports-mgmt/portupgrade - utility. Most users will want to run a test build using - the following command: + utility. A brute-force rebuild of all installed + applications can be accomplished with this command: &prompt.root; portupgrade -af @@ -371,81 +379,142 @@ any prompts during this process, removing the need for manual intervention during the build process. - If a custom kernel is in use, the upgrade process is - slightly more involved. A copy of the - GENERIC kernel is needed, and it should - be placed in - /boot/GENERIC. If the - GENERIC kernel is not already present in - the system, it may be obtained using one of the following - methods: + + Dealing with Custom Kernels - - - If a custom kernel has only been built once, the - kernel in - /boot/kernel.old is - actually the GENERIC one. Simply - rename this directory to /boot/GENERIC. - + If a custom kernel is in use, the upgrade process is + slightly more involved, and the procedure varies depending on + the version of &os;. - - Assuming physical access to the machine is possible, a - copy of the GENERIC kernel can be - installed from the CD-ROM media. Insert your installation - disc and use the following commands: + + Custom Kernels with &os; 8.X and Earlier - &prompt.root; mount /cdrom + A copy of the + GENERIC kernel is needed, and it should + be placed in + /boot/GENERIC. If the + GENERIC kernel is not already present in + the system, it may be obtained using one of the following + methods: + + + + If a custom kernel has only been built once, the + kernel in + /boot/kernel.old is + actually the GENERIC one. Simply + rename this directory to /boot/GENERIC. + + + + Assuming physical access to the machine is possible, a + copy of the GENERIC kernel can be + installed from the CD-ROM media. Insert your installation + disc and use the following commands: + + &prompt.root; mount /cdrom &prompt.root; cd /cdrom/X.Y-RELEASE/kernels &prompt.root; ./install.sh GENERIC - Replace X.Y-RELEASE - with the actual version of the release you are using. The - GENERIC kernel will be installed in - /boot/GENERIC by - default. - + Replace X.Y-RELEASE + with the actual version of the release you are using. The + GENERIC kernel will be installed in + /boot/GENERIC by + default. + - - Failing all the above, the - GENERIC kernel may be rebuilt and - installed from the sources: + + Failing all the above, the + GENERIC kernel may be rebuilt and + installed from the sources: - &prompt.root; cd /usr/src + &prompt.root; cd /usr/src &prompt.root; env DESTDIR=/boot/GENERIC make kernel &prompt.root; mv /boot/GENERIC/boot/kernel/* /boot/GENERIC &prompt.root; rm -rf /boot/GENERIC/boot - For this kernel to be picked up as - GENERIC - by freebsd-update, the - GENERIC configuration file must not - have been modified in any way. It is also suggested that - it is built without any other special options (preferably - with an empty /etc/make.conf). - - + For this kernel to be picked up as + GENERIC + by freebsd-update, the + GENERIC configuration file must not + have been modified in any way. It is also suggested that + it is built without any other special options (preferably + with an empty /etc/make.conf). + + - Rebooting to the GENERIC kernel is - not required at this stage. + Rebooting to the GENERIC kernel is + not required at this stage. + - Major and minor version updates may be performed by - providing freebsd-update with a release - version target, for example, the following command will - update to &os; 8.1: + + Custom Kernels with &os; 9.X and Later - &prompt.root; freebsd-update -r 8.1-RELEASE upgrade + + + If a custom kernel has only been built once, the + kernel in + /boot/kernel.old + is actually the GENERIC kernel. + Rename this directory to /boot/kernel. + - After the command has been received, - freebsd-update will evaluate the - configuration file and current system in an attempt to gather - the information necessary to update the system. A screen - listing will display what components have been detected and - what components have not been detected. For example: + + If physical access to the machine is available, a + copy of the GENERIC kernel can be + installed from the CD-ROM media. Load the + installation disc and use these commands: - Looking up update.FreeBSD.org mirrors... 1 mirrors found. + &prompt.root; mount /cdrom +&prompt.root; cd /cdrom/usr/freebsd-dist +&prompt.root; tar -C/ -xvf kernel.txz boot/kernel/kernel + + + + If the options above cannot be used, the + GENERIC kernel may be rebuilt and + installed from the sources: + + &prompt.root; cd /usr/src +&prompt.root; make kernel + + For this kernel to be identified as the + GENERIC kernel by + freebsd-update, the + GENERIC configuration file must + not have been modified in any way. It is also + suggested that the kernel is built without any other + special options, preferably with an empty + /etc/make.conf. + + + + Rebooting to the GENERIC kernel is + not required at this stage. + + + + + Performing the Upgrade + + Major and minor version upgrades may be performed by + providing freebsd-update with a release + version target, for example, the following command will + update to &os; 8.1: + + &prompt.root; freebsd-update -r 8.1-RELEASE upgrade + + After the command has been received, + freebsd-update will evaluate the + configuration file and current system in an attempt to gather + the information necessary to update the system. A screen + listing will display what components have been detected and + what components have not been detected. For example: + + Looking up update.FreeBSD.org mirrors... 1 mirrors found. Fetching metadata signature for 8.0-RELEASE from update1.FreeBSD.org... done. Fetching metadata index... done. Inspecting system... done. @@ -462,123 +531,128 @@ Does this look reasonable (y/n)? y - At this point, freebsd-update will - attempt to download all files required for the upgrade. In - some cases, the user may be prompted with questions regarding - what to install or how to proceed. + At this point, freebsd-update will + attempt to download all files required for the upgrade. In + some cases, the user may be prompted with questions regarding + what to install or how to proceed. - When using a custom kernel, the above step will produce a - warning similar to the following: + When using a custom kernel, the above step will produce a + warning similar to the following: - WARNING: This system is running a "MYKERNEL" kernel, which is not a + WARNING: This system is running a "MYKERNEL" kernel, which is not a kernel configuration distributed as part of FreeBSD 8.0-RELEASE. This kernel will not be updated: you MUST update the kernel manually before running "/usr/sbin/freebsd-update install" - This warning may be safely ignored at this point. The - updated GENERIC kernel will be used as an - intermediate step in the upgrade process. + This warning may be safely ignored at this point. The + updated GENERIC kernel will be used as an + intermediate step in the upgrade process. - After all patches have been downloaded to the local - system, they will then be applied. This process may take a - while depending on the speed and workload of the machine. - Configuration files will then be merged — this part - of the process requires some user intervention as a file may - be merged or an editor may appear on screen for a manual - merge. The results of every successful merge will be shown to - the user as the process continues. A failed or ignored merge - will cause the process to abort. Users may wish to make a - backup of /etc and - manually merge important files, such as - master.passwd or - group at a later time. + After all patches have been downloaded to the local + system, they will then be applied. This process may take a + while depending on the speed and workload of the machine. + Configuration files will then be merged — this part + of the process requires some user intervention as a file may + be merged or an editor may appear on screen for a manual + merge. The results of every successful merge will be shown to + the user as the process continues. A failed or ignored merge + will cause the process to abort. Users may wish to make a + backup of /etc and + manually merge important files, such as + master.passwd or + group at a later time. - - The system is not being altered yet, all patching and - merging is happening in another directory. When all - patches have been applied successfully, all configuration - files have been merged and it seems the process will go - smoothly, the changes will need to be committed by the - user. - + + The system is not being altered yet, all patching and + merging is happening in another directory. When all + patches have been applied successfully, all configuration + files have been merged and it seems the process will go + smoothly, the changes will need to be committed by the + user. + - Once this process is complete, the upgrade may be - committed to disk using the following command. + Once this process is complete, the upgrade may be + committed to disk using the following command. - &prompt.root; freebsd-update install + &prompt.root; freebsd-update install - The kernel and kernel modules will be patched first. At - this point the machine must be rebooted. If the system was - running with a custom kernel, use the &man.nextboot.8; command - to set the kernel for the next boot to - /boot/GENERIC (which - was updated): + The kernel and kernel modules will be patched first. At + this point the machine must be rebooted. If the system was + running with a custom kernel, use the &man.nextboot.8; command + to set the kernel for the next boot to + /boot/GENERIC (which + was updated): - &prompt.root; nextboot -k GENERIC + &prompt.root; nextboot -k GENERIC - - Before rebooting with the GENERIC - kernel, make sure it contains all drivers required for your - system to boot properly (and connect to the network, if the - machine that is being updated is accessed remotely). In - particular, if the previously running custom kernel - contained built-in functionality usually provided by kernel - modules, make sure to temporarily load these modules into - the GENERIC kernel using the - /boot/loader.conf facility. You may - also wish to disable non-essential services, disk and - network mounts, etc. until the upgrade process is - complete. - + + Before rebooting with the GENERIC + kernel, make sure it contains all drivers required for your + system to boot properly (and connect to the network, if the + machine that is being updated is accessed remotely). In + particular, if the previously running custom kernel + contained built-in functionality usually provided by kernel + modules, make sure to temporarily load these modules into + the GENERIC kernel using the + /boot/loader.conf facility. You may + also wish to disable non-essential services, disk and + network mounts, etc. until the upgrade process is + complete. + - The machine should now be restarted with the updated - kernel: + The machine should now be restarted with the updated + kernel: - &prompt.root; shutdown -r now + &prompt.root; shutdown -r now - Once the system has come back online, - freebsd-update will need to be started - again. The state of the process has been saved and thus, - freebsd-update will not start from the - beginning, but will remove all old shared libraries and object - files. To continue to this stage, issue the following - command: + Once the system has come back online, + freebsd-update will need to be started + again. The state of the process has been saved and thus, + freebsd-update will not start from the + beginning, but will remove all old shared libraries and object + files. To continue to this stage, issue the following + command: - &prompt.root; freebsd-update install + &prompt.root; freebsd-update install - - Depending on whether any libraries version numbers got - bumped, there may only be two install phases instead of - three. - + + Depending on whether any libraries version numbers got + bumped, there may only be two install phases instead of + three. + + - All third party software will now need to be rebuilt and - re-installed. This is required as installed software may - depend on libraries which have been removed during the upgrade - process. The - ports-mgmt/portupgrade - command may be used to automate this process. The following - commands may be used to begin this process: + + Rebuilding Ports After a Major Version Upgrade - &prompt.root; portupgrade -f ruby + After a major version upgrade, all third party software will now need to be rebuilt and + re-installed. This is required as installed software may + depend on libraries which have been removed during the upgrade + process. The + ports-mgmt/portupgrade + command may be used to automate this process. The following + commands may be used to begin this process: + + &prompt.root; portupgrade -f ruby &prompt.root; rm /var/db/pkg/pkgdb.db &prompt.root; portupgrade -f ruby18-bdb &prompt.root; rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db &prompt.root; portupgrade -af - Once this has completed, finish the upgrade process with a - final call to freebsd-update. Issue the - following command to tie up all loose ends in the upgrade - process: + Once this has completed, finish the upgrade process with a + final call to freebsd-update. Issue the + following command to tie up all loose ends in the upgrade + process: - &prompt.root; freebsd-update install + &prompt.root; freebsd-update install - If the GENERIC kernel was temporarily - used, this is the time to build and install a new custom - kernel in the usual way. + If the GENERIC kernel was temporarily + used, this is the time to build and install a new custom + kernel in the usual way. - Reboot the machine into the new &os; version. The process - is complete. + Reboot the machine into the new &os; version. The process + is complete. + --3512871622-1184402412-1358107748=:17568 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=fupd-ports2.diff Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=fupd-ports2.diff SW5kZXg6IGN1dHRpbmctZWRnZS9jaGFwdGVyLnhtbA0KPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQ0KLS0tIGN1dHRpbmctZWRnZS9jaGFwdGVyLnhtbAkocmV2 aXNpb24gNDA2MTYpDQorKysgY3V0dGluZy1lZGdlL2NoYXB0ZXIueG1sCSh3 b3JraW5nIGNvcHkpDQpAQCAtMzUyLDE1ICszNTIsMjMgQEANCiAgICAgPC9z ZWN0Mj4NCiANCiAgICAgPHNlY3QyIGlkPSJmcmVlYnNkdXBkYXRlLXVwZ3Jh ZGUiPg0KLSAgICAgIDx0aXRsZT5NYWpvciBhbmQgTWlub3IgVXBncmFkZXM8 L3RpdGxlPg0KKyAgICAgIDx0aXRsZT5NYWpvciBhbmQgTWlub3IgVmVyc2lv biBVcGdyYWRlczwvdGl0bGU+DQogDQotICAgICAgPHBhcmE+VGhpcyBwcm9j ZXNzIHdpbGwgcmVtb3ZlIG9sZCBvYmplY3QgZmlsZXMgYW5kDQorICAgICAg PHBhcmE+VXBncmFkZXMgZnJvbSBvbmUgbWlub3IgdmVyc2lvbiBvZiAmb3M7 IHRvIGFub3RoZXIsIGxpa2UNCisJZnJvbSAmb3M7Jm5ic3A7OS4wIHRvICZv czsmbmJzcDs5LjEsIGFyZSBjYWxsZWQNCisJPGVtcGhhc2lzPm1pbm9yIHZl cnNpb248L2VtcGhhc2lzPiB1cGdyYWRlcy4gIEdlbmVyYWxseSwNCisJaW5z dGFsbGVkIGFwcGxpY2F0aW9ucyB3aWxsIGNvbnRpbnVlIHRvIHdvcmsgd2l0 aG91dCBwcm9ibGVtcw0KKwlhZnRlciBtaW5vciB2ZXJzaW9uIHVwZ3JhZGVz LjwvcGFyYT4NCisNCisgICAgICA8cGFyYT48ZW1waGFzaXM+TWFqb3IgdmVy c2lvbjwvZW1waGFzaXM+IHVwZ3JhZGVzIGFyZSB3aGVuICZvczsNCisJaXMg dXBncmFkZWQgZnJvbSBvbmUgbWFqb3IgdmVyc2lvbiB0byBhbm90aGVyLCBs aWtlIGZyb20NCisJJm9zOyZuYnNwOzguWCB0byAmb3M7Jm5ic3A7OS5YLiAg TWFqb3IgdmVyc2lvbiB1cGdyYWRlcyB3aWxsIHJlbW92ZSBvbGQgb2JqZWN0 IGZpbGVzIGFuZA0KIAlsaWJyYXJpZXMgd2hpY2ggd2lsbCBicmVhayBtb3N0 IHRoaXJkIHBhcnR5IGFwcGxpY2F0aW9ucy4NCiAJSXQgaXMgcmVjb21tZW5k ZWQgdGhhdCBhbGwgaW5zdGFsbGVkIHBvcnRzIGVpdGhlciBiZSByZW1vdmVk DQotCWFuZCByZS1pbnN0YWxsZWQgb3IgdXBncmFkZWQgbGF0ZXIgdXNpbmcg dGhlDQorCWFuZCByZS1pbnN0YWxsZWQgb3IgdXBncmFkZWQgYWZ0ZXIgYSBt YWpvciB2ZXJzaW9uIHVwZ3JhZGUgYnkgdXNpbmcgdGhlDQogCTxmaWxlbmFt ZSByb2xlPSJwYWNrYWdlIj5wb3J0cy1tZ210L3BvcnR1cGdyYWRlPC9maWxl bmFtZT4NCi0JdXRpbGl0eS4gIE1vc3QgdXNlcnMgd2lsbCB3YW50IHRvIHJ1 biBhIHRlc3QgYnVpbGQgdXNpbmcNCi0JdGhlIGZvbGxvd2luZyBjb21tYW5k OjwvcGFyYT4NCisJdXRpbGl0eS4gIEEgYnJ1dGUtZm9yY2UgcmVidWlsZCBv ZiBhbGwgaW5zdGFsbGVkDQorCWFwcGxpY2F0aW9ucyBjYW4gYmUgYWNjb21w bGlzaGVkIHdpdGggdGhpcyBjb21tYW5kOjwvcGFyYT4NCiANCiAgICAgICA8 c2NyZWVuPiZwcm9tcHQucm9vdDsgPHVzZXJpbnB1dD5wb3J0dXBncmFkZSAt YWY8L3VzZXJpbnB1dD48L3NjcmVlbj4NCiANCkBAIC0zNzEsODEgKzM3OSwx NDIgQEANCiAJYW55IHByb21wdHMgZHVyaW5nIHRoaXMgcHJvY2VzcywgcmVt b3ZpbmcgdGhlIG5lZWQgZm9yDQogCW1hbnVhbCBpbnRlcnZlbnRpb24gZHVy aW5nIHRoZSBidWlsZCBwcm9jZXNzLjwvcGFyYT4NCiANCi0gICAgICA8cGFy YT5JZiBhIGN1c3RvbSBrZXJuZWwgaXMgaW4gdXNlLCB0aGUgdXBncmFkZSBw cm9jZXNzIGlzDQotCXNsaWdodGx5IG1vcmUgaW52b2x2ZWQuICBBIGNvcHkg b2YgdGhlDQotCTxmaWxlbmFtZT5HRU5FUklDPC9maWxlbmFtZT4ga2VybmVs IGlzIG5lZWRlZCwgYW5kIGl0IHNob3VsZA0KLQliZSBwbGFjZWQgaW4NCi0J PGZpbGVuYW1lIGNsYXNzPSJkaXJlY3RvcnkiPi9ib290L0dFTkVSSUM8L2Zp bGVuYW1lPi4gIElmIHRoZQ0KLQk8ZmlsZW5hbWU+R0VORVJJQzwvZmlsZW5h bWU+IGtlcm5lbCBpcyBub3QgYWxyZWFkeSBwcmVzZW50IGluDQotCXRoZSBz eXN0ZW0sIGl0IG1heSBiZSBvYnRhaW5lZCB1c2luZyBvbmUgb2YgdGhlIGZv bGxvd2luZw0KLQltZXRob2RzOjwvcGFyYT4NCisgICAgICA8c2VjdDMgaWQ9 ImZyZWVic2QtdXBkYXRlLWN1c3RvbS1rZXJuZWwiPg0KKwk8dGl0bGU+RGVh bGluZyB3aXRoIEN1c3RvbSBLZXJuZWxzPC90aXRsZT4NCiANCi0gICAgICA8 aXRlbWl6ZWRsaXN0Pg0KLQk8bGlzdGl0ZW0+DQotCSAgPHBhcmE+SWYgYSBj dXN0b20ga2VybmVsIGhhcyBvbmx5IGJlZW4gYnVpbHQgb25jZSwgdGhlDQot CSAgICBrZXJuZWwgaW4NCi0JICAgIDxmaWxlbmFtZSBjbGFzcz0iZGlyZWN0 b3J5Ij4vYm9vdC9rZXJuZWwub2xkPC9maWxlbmFtZT4gaXMNCi0JICAgIGFj dHVhbGx5IHRoZSA8ZmlsZW5hbWU+R0VORVJJQzwvZmlsZW5hbWU+IG9uZS4g IFNpbXBseQ0KLQkgICAgcmVuYW1lIHRoaXMgZGlyZWN0b3J5IHRvIDxmaWxl bmFtZQ0KLQkgICAgICBjbGFzcz0iZGlyZWN0b3J5Ij4vYm9vdC9HRU5FUklD PC9maWxlbmFtZT4uPC9wYXJhPg0KLQk8L2xpc3RpdGVtPg0KKwk8cGFyYT5J ZiBhIGN1c3RvbSBrZXJuZWwgaXMgaW4gdXNlLCB0aGUgdXBncmFkZSBwcm9j ZXNzIGlzDQorCSAgc2xpZ2h0bHkgbW9yZSBpbnZvbHZlZCwgYW5kIHRoZSBw cm9jZWR1cmUgdmFyaWVzIGRlcGVuZGluZyBvbg0KKwkgIHRoZSB2ZXJzaW9u IG9mICZvczsuPC9wYXJhPg0KIA0KLQk8bGlzdGl0ZW0+DQotCSAgPHBhcmE+ QXNzdW1pbmcgcGh5c2ljYWwgYWNjZXNzIHRvIHRoZSBtYWNoaW5lIGlzIHBv c3NpYmxlLCBhDQotCSAgICBjb3B5IG9mIHRoZSA8ZmlsZW5hbWU+R0VORVJJ QzwvZmlsZW5hbWU+IGtlcm5lbCBjYW4gYmUNCi0JICAgIGluc3RhbGxlZCBm cm9tIHRoZSBDRC1ST00gbWVkaWEuICBJbnNlcnQgeW91ciBpbnN0YWxsYXRp b24NCi0JICAgIGRpc2MgYW5kIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmRz OjwvcGFyYT4NCisJPHNlY3Q0IGlkPSJmcmVlYnNkLXVwZGF0ZS1jdXN0b20t a2VybmVsLTh4Ij4NCisJICA8dGl0bGU+Q3VzdG9tIEtlcm5lbHMgd2l0aCAm b3M7Jm5ic3A7OC5YIGFuZCBFYXJsaWVyPC90aXRsZT4NCiANCi0JICA8c2Ny ZWVuPiZwcm9tcHQucm9vdDsgPHVzZXJpbnB1dD5tb3VudCAvY2Ryb208L3Vz ZXJpbnB1dD4NCisJICA8cGFyYT5BIGNvcHkgb2YgdGhlDQorCSAgICA8Zmls ZW5hbWU+R0VORVJJQzwvZmlsZW5hbWU+IGtlcm5lbCBpcyBuZWVkZWQsIGFu ZCBpdCBzaG91bGQNCisJICAgIGJlIHBsYWNlZCBpbg0KKwkgICAgPGZpbGVu YW1lIGNsYXNzPSJkaXJlY3RvcnkiPi9ib290L0dFTkVSSUM8L2ZpbGVuYW1l Pi4gIElmIHRoZQ0KKwkgICAgPGZpbGVuYW1lPkdFTkVSSUM8L2ZpbGVuYW1l PiBrZXJuZWwgaXMgbm90IGFscmVhZHkgcHJlc2VudCBpbg0KKwkgICAgdGhl IHN5c3RlbSwgaXQgbWF5IGJlIG9idGFpbmVkIHVzaW5nIG9uZSBvZiB0aGUg Zm9sbG93aW5nDQorCSAgICBtZXRob2RzOjwvcGFyYT4NCisNCisJICA8aXRl bWl6ZWRsaXN0Pg0KKwkgICAgPGxpc3RpdGVtPg0KKwkgICAgICA8cGFyYT5J ZiBhIGN1c3RvbSBrZXJuZWwgaGFzIG9ubHkgYmVlbiBidWlsdCBvbmNlLCB0 aGUNCisJCWtlcm5lbCBpbg0KKwkgICAgICAgIDxmaWxlbmFtZSBjbGFzcz0i ZGlyZWN0b3J5Ij4vYm9vdC9rZXJuZWwub2xkPC9maWxlbmFtZT4gaXMNCisJ CWFjdHVhbGx5IHRoZSA8ZmlsZW5hbWU+R0VORVJJQzwvZmlsZW5hbWU+IG9u ZS4gIFNpbXBseQ0KKwkJcmVuYW1lIHRoaXMgZGlyZWN0b3J5IHRvIDxmaWxl bmFtZQ0KKwkJICBjbGFzcz0iZGlyZWN0b3J5Ij4vYm9vdC9HRU5FUklDPC9m aWxlbmFtZT4uPC9wYXJhPg0KKwkgICAgPC9saXN0aXRlbT4NCisNCisJICAg IDxsaXN0aXRlbT4NCisJICAgICAgPHBhcmE+QXNzdW1pbmcgcGh5c2ljYWwg YWNjZXNzIHRvIHRoZSBtYWNoaW5lIGlzIHBvc3NpYmxlLCBhDQorCQljb3B5 IG9mIHRoZSA8ZmlsZW5hbWU+R0VORVJJQzwvZmlsZW5hbWU+IGtlcm5lbCBj YW4gYmUNCisJCWluc3RhbGxlZCBmcm9tIHRoZSBDRC1ST00gbWVkaWEuICBJ bnNlcnQgeW91ciBpbnN0YWxsYXRpb24NCisJCWRpc2MgYW5kIHVzZSB0aGUg Zm9sbG93aW5nIGNvbW1hbmRzOjwvcGFyYT4NCisNCisJICAgICAgPHNjcmVl bj4mcHJvbXB0LnJvb3Q7IDx1c2VyaW5wdXQ+bW91bnQgL2Nkcm9tPC91c2Vy aW5wdXQ+DQogJnByb21wdC5yb290OyA8dXNlcmlucHV0PmNkIC9jZHJvbS88 cmVwbGFjZWFibGU+WC5ZLVJFTEVBU0U8L3JlcGxhY2VhYmxlPi9rZXJuZWxz PC91c2VyaW5wdXQ+DQogJnByb21wdC5yb290OyA8dXNlcmlucHV0Pi4vaW5z dGFsbC5zaCBHRU5FUklDPC91c2VyaW5wdXQ+PC9zY3JlZW4+DQogDQotCSAg PHBhcmE+UmVwbGFjZSA8ZmlsZW5hbWUNCi0JICAgICAgY2xhc3M9ImRpcmVj dG9yeSI+PHJlcGxhY2VhYmxlPlguWS1SRUxFQVNFPC9yZXBsYWNlYWJsZT48 L2ZpbGVuYW1lPg0KLQkgICAgd2l0aCB0aGUgYWN0dWFsIHZlcnNpb24gb2Yg dGhlIHJlbGVhc2UgeW91IGFyZSB1c2luZy4gIFRoZQ0KLQkgICAgPGZpbGVu YW1lPkdFTkVSSUM8L2ZpbGVuYW1lPiBrZXJuZWwgd2lsbCBiZSBpbnN0YWxs ZWQgaW4NCi0JICAgIDxmaWxlbmFtZSBjbGFzcz0iZGlyZWN0b3J5Ij4vYm9v dC9HRU5FUklDPC9maWxlbmFtZT4gYnkNCi0JICAgIGRlZmF1bHQuPC9wYXJh Pg0KLQk8L2xpc3RpdGVtPg0KKwkgICAgICA8cGFyYT5SZXBsYWNlIDxmaWxl bmFtZQ0KKwkgICAgICAgICAgY2xhc3M9ImRpcmVjdG9yeSI+PHJlcGxhY2Vh YmxlPlguWS1SRUxFQVNFPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPg0KKwkJ d2l0aCB0aGUgYWN0dWFsIHZlcnNpb24gb2YgdGhlIHJlbGVhc2UgeW91IGFy ZSB1c2luZy4gIFRoZQ0KKwkJPGZpbGVuYW1lPkdFTkVSSUM8L2ZpbGVuYW1l PiBrZXJuZWwgd2lsbCBiZSBpbnN0YWxsZWQgaW4NCisJCTxmaWxlbmFtZSBj bGFzcz0iZGlyZWN0b3J5Ij4vYm9vdC9HRU5FUklDPC9maWxlbmFtZT4gYnkN CisJCWRlZmF1bHQuPC9wYXJhPg0KKwkgICAgPC9saXN0aXRlbT4NCiANCi0J PGxpc3RpdGVtPg0KLQkgIDxwYXJhPkZhaWxpbmcgYWxsIHRoZSBhYm92ZSwg dGhlDQotCSAgICA8ZmlsZW5hbWU+R0VORVJJQzwvZmlsZW5hbWU+IGtlcm5l bCBtYXkgYmUgcmVidWlsdCBhbmQNCi0JICAgIGluc3RhbGxlZCBmcm9tIHRo ZSBzb3VyY2VzOjwvcGFyYT4NCisJICAgIDxsaXN0aXRlbT4NCisJICAgICAg PHBhcmE+RmFpbGluZyBhbGwgdGhlIGFib3ZlLCB0aGUNCisJCTxmaWxlbmFt ZT5HRU5FUklDPC9maWxlbmFtZT4ga2VybmVsIG1heSBiZSByZWJ1aWx0IGFu ZA0KKwkJaW5zdGFsbGVkIGZyb20gdGhlIHNvdXJjZXM6PC9wYXJhPg0KIA0K LQkgIDxzY3JlZW4+JnByb21wdC5yb290OyA8dXNlcmlucHV0PmNkIC91c3Iv c3JjPC91c2VyaW5wdXQ+DQorCSAgICAgIDxzY3JlZW4+JnByb21wdC5yb290 OyA8dXNlcmlucHV0PmNkIC91c3Ivc3JjPC91c2VyaW5wdXQ+DQogJnByb21w dC5yb290OyA8dXNlcmlucHV0PmVudiBERVNURElSPS9ib290L0dFTkVSSUMg bWFrZSBrZXJuZWw8L3VzZXJpbnB1dD4NCiAmcHJvbXB0LnJvb3Q7IDx1c2Vy aW5wdXQ+bXYgL2Jvb3QvR0VORVJJQy9ib290L2tlcm5lbC8qIC9ib290L0dF TkVSSUM8L3VzZXJpbnB1dD4NCiAmcHJvbXB0LnJvb3Q7IDx1c2VyaW5wdXQ+ cm0gLXJmIC9ib290L0dFTkVSSUMvYm9vdDwvdXNlcmlucHV0Pjwvc2NyZWVu Pg0KIA0KLQkgIDxwYXJhPkZvciB0aGlzIGtlcm5lbCB0byBiZSBwaWNrZWQg dXAgYXMNCi0JICAgIDxmaWxlbmFtZT5HRU5FUklDPC9maWxlbmFtZT4NCi0J ICAgIGJ5IDxjb21tYW5kPmZyZWVic2QtdXBkYXRlPC9jb21tYW5kPiwgdGhl DQotCSAgICA8ZmlsZW5hbWU+R0VORVJJQzwvZmlsZW5hbWU+IGNvbmZpZ3Vy YXRpb24gZmlsZSBtdXN0IG5vdA0KLQkgICAgaGF2ZSBiZWVuIG1vZGlmaWVk IGluIGFueSB3YXkuICBJdCBpcyBhbHNvIHN1Z2dlc3RlZCB0aGF0DQotCSAg ICBpdCBpcyBidWlsdCB3aXRob3V0IGFueSBvdGhlciBzcGVjaWFsIG9wdGlv bnMgKHByZWZlcmFibHkNCi0JICAgIHdpdGggYW4gZW1wdHkgPGZpbGVuYW1l Pi9ldGMvbWFrZS5jb25mPC9maWxlbmFtZT4pLjwvcGFyYT4NCi0JPC9saXN0 aXRlbT4NCi0gICAgICA8L2l0ZW1pemVkbGlzdD4NCisJICAgICAgPHBhcmE+ Rm9yIHRoaXMga2VybmVsIHRvIGJlIHBpY2tlZCB1cCBhcw0KKwkJPGZpbGVu YW1lPkdFTkVSSUM8L2ZpbGVuYW1lPg0KKwkJYnkgPGNvbW1hbmQ+ZnJlZWJz ZC11cGRhdGU8L2NvbW1hbmQ+LCB0aGUNCisJCTxmaWxlbmFtZT5HRU5FUklD PC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlIG11c3Qgbm90DQorCQlo YXZlIGJlZW4gbW9kaWZpZWQgaW4gYW55IHdheS4gIEl0IGlzIGFsc28gc3Vn Z2VzdGVkIHRoYXQNCisJCWl0IGlzIGJ1aWx0IHdpdGhvdXQgYW55IG90aGVy IHNwZWNpYWwgb3B0aW9ucyAocHJlZmVyYWJseQ0KKwkJd2l0aCBhbiBlbXB0 eSA8ZmlsZW5hbWU+L2V0Yy9tYWtlLmNvbmY8L2ZpbGVuYW1lPikuPC9wYXJh Pg0KKwkgICAgPC9saXN0aXRlbT4NCisJICA8L2l0ZW1pemVkbGlzdD4NCiAN Ci0gICAgICA8cGFyYT5SZWJvb3RpbmcgdG8gdGhlIDxmaWxlbmFtZT5HRU5F UklDPC9maWxlbmFtZT4ga2VybmVsIGlzDQotCW5vdCByZXF1aXJlZCBhdCB0 aGlzIHN0YWdlLjwvcGFyYT4NCisJICA8cGFyYT5SZWJvb3RpbmcgdG8gdGhl IDxmaWxlbmFtZT5HRU5FUklDPC9maWxlbmFtZT4ga2VybmVsIGlzDQorCSAg ICBub3QgcmVxdWlyZWQgYXQgdGhpcyBzdGFnZS48L3BhcmE+DQorCTwvc2Vj dDQ+DQogDQotICAgICAgPHBhcmE+TWFqb3IgYW5kIG1pbm9yIHZlcnNpb24g dXBkYXRlcyBtYXkgYmUgcGVyZm9ybWVkIGJ5DQotCXByb3ZpZGluZyA8Y29t bWFuZD5mcmVlYnNkLXVwZGF0ZTwvY29tbWFuZD4gd2l0aCBhIHJlbGVhc2UN Ci0JdmVyc2lvbiB0YXJnZXQsIGZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5n IGNvbW1hbmQgd2lsbA0KLQl1cGRhdGUgdG8gJm9zOyZuYnNwOzguMTo8L3Bh cmE+DQorCTxzZWN0NCBpZD0iZnJlZWJzZC11cGRhdGUtY3VzdG9tLWtlcm5l bC05eCI+DQorCSAgPHRpdGxlPkN1c3RvbSBLZXJuZWxzIHdpdGggJm9zOyZu YnNwOzkuWCBhbmQgTGF0ZXI8L3RpdGxlPg0KIA0KLSAgICAgIDxzY3JlZW4+ JnByb21wdC5yb290OyA8dXNlcmlucHV0PmZyZWVic2QtdXBkYXRlIC1yIDgu MS1SRUxFQVNFIHVwZ3JhZGU8L3VzZXJpbnB1dD48L3NjcmVlbj4NCisJICA8 aXRlbWl6ZWRsaXN0Pg0KKwkgICAgPGxpc3RpdGVtPg0KKwkgICAgICA8cGFy YT5JZiBhIGN1c3RvbSBrZXJuZWwgaGFzIG9ubHkgYmVlbiBidWlsdCBvbmNl LCB0aGUNCisJCWtlcm5lbCBpbg0KKwkJPGZpbGVuYW1lIGNsYXNzPSJkaXJl Y3RvcnkiPi9ib290L2tlcm5lbC5vbGQ8L2ZpbGVuYW1lPg0KKwkJaXMgYWN0 dWFsbHkgdGhlIDxsaXRlcmFsPkdFTkVSSUM8L2xpdGVyYWw+IGtlcm5lbC4N CisJCVJlbmFtZSB0aGlzIGRpcmVjdG9yeSB0byA8ZmlsZW5hbWUNCisJCSAg Y2xhc3M9ImRpcmVjdG9yeSI+L2Jvb3Qva2VybmVsPC9maWxlbmFtZT4uPC9w YXJhPg0KKwkgICAgPC9saXN0aXRlbT4NCiANCi0gICAgICA8cGFyYT5BZnRl ciB0aGUgY29tbWFuZCBoYXMgYmVlbiByZWNlaXZlZCwNCi0JPGNvbW1hbmQ+ ZnJlZWJzZC11cGRhdGU8L2NvbW1hbmQ+IHdpbGwgZXZhbHVhdGUgdGhlDQot CWNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgY3VycmVudCBzeXN0ZW0gaW4gYW4g YXR0ZW1wdCB0byBnYXRoZXINCi0JdGhlIGluZm9ybWF0aW9uIG5lY2Vzc2Fy eSB0byB1cGRhdGUgdGhlIHN5c3RlbS4gIEEgc2NyZWVuDQotCWxpc3Rpbmcg d2lsbCBkaXNwbGF5IHdoYXQgY29tcG9uZW50cyBoYXZlIGJlZW4gZGV0ZWN0 ZWQgYW5kDQotCXdoYXQgY29tcG9uZW50cyBoYXZlIG5vdCBiZWVuIGRldGVj dGVkLiAgRm9yIGV4YW1wbGU6PC9wYXJhPg0KKwkgICAgPGxpc3RpdGVtPg0K KwkgICAgICA8cGFyYT5JZiBwaHlzaWNhbCBhY2Nlc3MgdG8gdGhlIG1hY2hp bmUgaXMgYXZhaWxhYmxlLCBhDQorCQljb3B5IG9mIHRoZSA8bGl0ZXJhbD5H RU5FUklDPC9saXRlcmFsPiBrZXJuZWwgY2FuIGJlDQorCQlpbnN0YWxsZWQg ZnJvbSB0aGUgQ0QtUk9NIG1lZGlhLiAgTG9hZCB0aGUNCisJCWluc3RhbGxh dGlvbiBkaXNjIGFuZCB1c2UgdGhlc2UgY29tbWFuZHM6PC9wYXJhPg0KIA0K LSAgICAgIDxzY3JlZW4+TG9va2luZyB1cCB1cGRhdGUuRnJlZUJTRC5vcmcg bWlycm9ycy4uLiAxIG1pcnJvcnMgZm91bmQuDQorCSAgICAgIDxzY3JlZW4+ JnByb21wdC5yb290OyA8dXNlcmlucHV0Pm1vdW50IC9jZHJvbTwvdXNlcmlu cHV0Pg0KKyZwcm9tcHQucm9vdDsgPHVzZXJpbnB1dD5jZCAvY2Ryb20vdXNy L2ZyZWVic2QtZGlzdDwvdXNlcmlucHV0Pg0KKyZwcm9tcHQucm9vdDsgPHVz ZXJpbnB1dD50YXIgLUMvIC14dmYga2VybmVsLnR4eiBib290L2tlcm5lbC9r ZXJuZWw8L3VzZXJpbnB1dD48L3NjcmVlbj4NCisJICAgIDwvbGlzdGl0ZW0+ DQorDQorCSAgICA8bGlzdGl0ZW0+DQorCSAgICAgIDxwYXJhPklmIHRoZSBv cHRpb25zIGFib3ZlIGNhbm5vdCBiZSB1c2VkLCB0aGUNCisJCTxsaXRlcmFs PkdFTkVSSUM8L2xpdGVyYWw+IGtlcm5lbCBtYXkgYmUgcmVidWlsdCBhbmQN CisJCWluc3RhbGxlZCBmcm9tIHRoZSBzb3VyY2VzOjwvcGFyYT4NCisNCisJ ICAgICAgPHNjcmVlbj4mcHJvbXB0LnJvb3Q7IDx1c2VyaW5wdXQ+Y2QgL3Vz ci9zcmM8L3VzZXJpbnB1dD4NCismcHJvbXB0LnJvb3Q7IDx1c2VyaW5wdXQ+ bWFrZSBrZXJuZWw8L3VzZXJpbnB1dD48L3NjcmVlbj4NCisNCisJICAgICAg PHBhcmE+Rm9yIHRoaXMga2VybmVsIHRvIGJlIGlkZW50aWZpZWQgYXMgdGhl DQorCQk8bGl0ZXJhbD5HRU5FUklDPC9saXRlcmFsPiBrZXJuZWwgYnkNCisJ CTxjb21tYW5kPmZyZWVic2QtdXBkYXRlPC9jb21tYW5kPiwgdGhlDQorCQk8 ZmlsZW5hbWU+R0VORVJJQzwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmls ZSBtdXN0DQorCQlub3QgaGF2ZSBiZWVuIG1vZGlmaWVkIGluIGFueSB3YXku ICBJdCBpcyBhbHNvDQorCQlzdWdnZXN0ZWQgdGhhdCB0aGUga2VybmVsIGlz IGJ1aWx0IHdpdGhvdXQgYW55IG90aGVyDQorCQlzcGVjaWFsIG9wdGlvbnMs IHByZWZlcmFibHkgd2l0aCBhbiBlbXB0eQ0KKwkJPGZpbGVuYW1lPi9ldGMv bWFrZS5jb25mPC9maWxlbmFtZT4uPC9wYXJhPg0KKwkgICAgPC9saXN0aXRl bT4NCisJICA8L2l0ZW1pemVkbGlzdD4NCisNCisJICA8cGFyYT5SZWJvb3Rp bmcgdG8gdGhlIDxmaWxlbmFtZT5HRU5FUklDPC9maWxlbmFtZT4ga2VybmVs IGlzDQorCSAgICBub3QgcmVxdWlyZWQgYXQgdGhpcyBzdGFnZS48L3BhcmE+ DQorCTwvc2VjdDQ+DQorICAgICAgPC9zZWN0Mz4NCisNCisgICAgICA8c2Vj dDMgaWQ9ImZyZWVic2R1cGRhdGUtdXNpbmciPg0KKwk8dGl0bGU+UGVyZm9y bWluZyB0aGUgVXBncmFkZTwvdGl0bGU+DQorDQorCTxwYXJhPk1ham9yIGFu ZCBtaW5vciB2ZXJzaW9uIHVwZ3JhZGVzIG1heSBiZSBwZXJmb3JtZWQgYnkN CisJICBwcm92aWRpbmcgPGNvbW1hbmQ+ZnJlZWJzZC11cGRhdGU8L2NvbW1h bmQ+IHdpdGggYSByZWxlYXNlDQorCSAgdmVyc2lvbiB0YXJnZXQsIGZvciBl eGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgd2lsbA0KKwkgIHVwZGF0 ZSB0byAmb3M7Jm5ic3A7OC4xOjwvcGFyYT4NCisNCisJPHNjcmVlbj4mcHJv bXB0LnJvb3Q7IDx1c2VyaW5wdXQ+ZnJlZWJzZC11cGRhdGUgLXIgOC4xLVJF TEVBU0UgdXBncmFkZTwvdXNlcmlucHV0Pjwvc2NyZWVuPg0KKw0KKwk8cGFy YT5BZnRlciB0aGUgY29tbWFuZCBoYXMgYmVlbiByZWNlaXZlZCwNCisJICA8 Y29tbWFuZD5mcmVlYnNkLXVwZGF0ZTwvY29tbWFuZD4gd2lsbCBldmFsdWF0 ZSB0aGUNCisJICBjb25maWd1cmF0aW9uIGZpbGUgYW5kIGN1cnJlbnQgc3lz dGVtIGluIGFuIGF0dGVtcHQgdG8gZ2F0aGVyDQorCSAgdGhlIGluZm9ybWF0 aW9uIG5lY2Vzc2FyeSB0byB1cGRhdGUgdGhlIHN5c3RlbS4gIEEgc2NyZWVu DQorCSAgbGlzdGluZyB3aWxsIGRpc3BsYXkgd2hhdCBjb21wb25lbnRzIGhh dmUgYmVlbiBkZXRlY3RlZCBhbmQNCisJICB3aGF0IGNvbXBvbmVudHMgaGF2 ZSBub3QgYmVlbiBkZXRlY3RlZC4gIEZvciBleGFtcGxlOjwvcGFyYT4NCisN CisJPHNjcmVlbj5Mb29raW5nIHVwIHVwZGF0ZS5GcmVlQlNELm9yZyBtaXJy b3JzLi4uIDEgbWlycm9ycyBmb3VuZC4NCiBGZXRjaGluZyBtZXRhZGF0YSBz aWduYXR1cmUgZm9yIDguMC1SRUxFQVNFIGZyb20gdXBkYXRlMS5GcmVlQlNE Lm9yZy4uLiBkb25lLg0KIEZldGNoaW5nIG1ldGFkYXRhIGluZGV4Li4uIGRv bmUuDQogSW5zcGVjdGluZyBzeXN0ZW0uLi4gZG9uZS4NCkBAIC00NjIsMTIz ICs1MzEsMTI4IEBADQogDQogRG9lcyB0aGlzIGxvb2sgcmVhc29uYWJsZSAo eS9uKT8geTwvc2NyZWVuPg0KIA0KLSAgICAgIDxwYXJhPkF0IHRoaXMgcG9p bnQsIDxjb21tYW5kPmZyZWVic2QtdXBkYXRlPC9jb21tYW5kPiB3aWxsDQot CWF0dGVtcHQgdG8gZG93bmxvYWQgYWxsIGZpbGVzIHJlcXVpcmVkIGZvciB0 aGUgdXBncmFkZS4gIEluDQotCXNvbWUgY2FzZXMsIHRoZSB1c2VyIG1heSBi ZSBwcm9tcHRlZCB3aXRoIHF1ZXN0aW9ucyByZWdhcmRpbmcNCi0Jd2hhdCB0 byBpbnN0YWxsIG9yIGhvdyB0byBwcm9jZWVkLjwvcGFyYT4NCisJPHBhcmE+ QXQgdGhpcyBwb2ludCwgPGNvbW1hbmQ+ZnJlZWJzZC11cGRhdGU8L2NvbW1h bmQ+IHdpbGwNCisJICBhdHRlbXB0IHRvIGRvd25sb2FkIGFsbCBmaWxlcyBy ZXF1aXJlZCBmb3IgdGhlIHVwZ3JhZGUuICBJbg0KKwkgIHNvbWUgY2FzZXMs IHRoZSB1c2VyIG1heSBiZSBwcm9tcHRlZCB3aXRoIHF1ZXN0aW9ucyByZWdh cmRpbmcNCisJICB3aGF0IHRvIGluc3RhbGwgb3IgaG93IHRvIHByb2NlZWQu PC9wYXJhPg0KIA0KLSAgICAgIDxwYXJhPldoZW4gdXNpbmcgYSBjdXN0b20g a2VybmVsLCB0aGUgYWJvdmUgc3RlcCB3aWxsIHByb2R1Y2UgYQ0KLQl3YXJu aW5nIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZzo8L3BhcmE+DQorCTxwYXJh PldoZW4gdXNpbmcgYSBjdXN0b20ga2VybmVsLCB0aGUgYWJvdmUgc3RlcCB3 aWxsIHByb2R1Y2UgYQ0KKwkgIHdhcm5pbmcgc2ltaWxhciB0byB0aGUgZm9s bG93aW5nOjwvcGFyYT4NCiANCi0gICAgICA8c2NyZWVuPldBUk5JTkc6IFRo aXMgc3lzdGVtIGlzIHJ1bm5pbmcgYSAiPHJlcGxhY2VhYmxlPk1ZS0VSTkVM PC9yZXBsYWNlYWJsZT4iIGtlcm5lbCwgd2hpY2ggaXMgbm90IGENCisJPHNj cmVlbj5XQVJOSU5HOiBUaGlzIHN5c3RlbSBpcyBydW5uaW5nIGEgIjxyZXBs YWNlYWJsZT5NWUtFUk5FTDwvcmVwbGFjZWFibGU+IiBrZXJuZWwsIHdoaWNo IGlzIG5vdCBhDQoga2VybmVsIGNvbmZpZ3VyYXRpb24gZGlzdHJpYnV0ZWQg YXMgcGFydCBvZiBGcmVlQlNEIDguMC1SRUxFQVNFLg0KIFRoaXMga2VybmVs IHdpbGwgbm90IGJlIHVwZGF0ZWQ6IHlvdSBNVVNUIHVwZGF0ZSB0aGUga2Vy bmVsIG1hbnVhbGx5DQogYmVmb3JlIHJ1bm5pbmcgIi91c3Ivc2Jpbi9mcmVl YnNkLXVwZGF0ZSBpbnN0YWxsIjwvc2NyZWVuPg0KIA0KLSAgICAgIDxwYXJh PlRoaXMgd2FybmluZyBtYXkgYmUgc2FmZWx5IGlnbm9yZWQgYXQgdGhpcyBw b2ludC4gIFRoZQ0KLQl1cGRhdGVkIDxmaWxlbmFtZT5HRU5FUklDPC9maWxl bmFtZT4ga2VybmVsIHdpbGwgYmUgdXNlZCBhcyBhbg0KLQlpbnRlcm1lZGlh dGUgc3RlcCBpbiB0aGUgdXBncmFkZSBwcm9jZXNzLjwvcGFyYT4NCisJPHBh cmE+VGhpcyB3YXJuaW5nIG1heSBiZSBzYWZlbHkgaWdub3JlZCBhdCB0aGlz IHBvaW50LiAgVGhlDQorCSAgdXBkYXRlZCA8ZmlsZW5hbWU+R0VORVJJQzwv ZmlsZW5hbWU+IGtlcm5lbCB3aWxsIGJlIHVzZWQgYXMgYW4NCisJICBpbnRl cm1lZGlhdGUgc3RlcCBpbiB0aGUgdXBncmFkZSBwcm9jZXNzLjwvcGFyYT4N CiANCi0gICAgICA8cGFyYT5BZnRlciBhbGwgcGF0Y2hlcyBoYXZlIGJlZW4g ZG93bmxvYWRlZCB0byB0aGUgbG9jYWwNCi0Jc3lzdGVtLCB0aGV5IHdpbGwg dGhlbiBiZSBhcHBsaWVkLiAgVGhpcyBwcm9jZXNzIG1heSB0YWtlIGENCi0J d2hpbGUgZGVwZW5kaW5nIG9uIHRoZSBzcGVlZCBhbmQgd29ya2xvYWQgb2Yg dGhlIG1hY2hpbmUuDQotCUNvbmZpZ3VyYXRpb24gZmlsZXMgd2lsbCB0aGVu IGJlIG1lcmdlZCZuYnNwOyZtZGFzaDsgdGhpcyBwYXJ0DQotCW9mIHRoZSBw cm9jZXNzIHJlcXVpcmVzIHNvbWUgdXNlciBpbnRlcnZlbnRpb24gYXMgYSBm aWxlIG1heQ0KLQliZSBtZXJnZWQgb3IgYW4gZWRpdG9yIG1heSBhcHBlYXIg b24gc2NyZWVuIGZvciBhIG1hbnVhbA0KLQltZXJnZS4gIFRoZSByZXN1bHRz IG9mIGV2ZXJ5IHN1Y2Nlc3NmdWwgbWVyZ2Ugd2lsbCBiZSBzaG93biB0bw0K LQl0aGUgdXNlciBhcyB0aGUgcHJvY2VzcyBjb250aW51ZXMuICBBIGZhaWxl ZCBvciBpZ25vcmVkIG1lcmdlDQotCXdpbGwgY2F1c2UgdGhlIHByb2Nlc3Mg dG8gYWJvcnQuICBVc2VycyBtYXkgd2lzaCB0byBtYWtlIGENCi0JYmFja3Vw IG9mIDxmaWxlbmFtZSBjbGFzcz0iZGlyZWN0b3J5Ij4vZXRjPC9maWxlbmFt ZT4gYW5kDQotCW1hbnVhbGx5IG1lcmdlIGltcG9ydGFudCBmaWxlcywgc3Vj aCBhcw0KLQk8ZmlsZW5hbWU+bWFzdGVyLnBhc3N3ZDwvZmlsZW5hbWU+IG9y DQotCTxmaWxlbmFtZT5ncm91cDwvZmlsZW5hbWU+IGF0IGEgbGF0ZXIgdGlt ZS48L3BhcmE+DQorCTxwYXJhPkFmdGVyIGFsbCBwYXRjaGVzIGhhdmUgYmVl biBkb3dubG9hZGVkIHRvIHRoZSBsb2NhbA0KKwkgIHN5c3RlbSwgdGhleSB3 aWxsIHRoZW4gYmUgYXBwbGllZC4gIFRoaXMgcHJvY2VzcyBtYXkgdGFrZSBh DQorCSAgd2hpbGUgZGVwZW5kaW5nIG9uIHRoZSBzcGVlZCBhbmQgd29ya2xv YWQgb2YgdGhlIG1hY2hpbmUuDQorCSAgQ29uZmlndXJhdGlvbiBmaWxlcyB3 aWxsIHRoZW4gYmUgbWVyZ2VkJm5ic3A7Jm1kYXNoOyB0aGlzIHBhcnQNCisJ ICBvZiB0aGUgcHJvY2VzcyByZXF1aXJlcyBzb21lIHVzZXIgaW50ZXJ2ZW50 aW9uIGFzIGEgZmlsZSBtYXkNCisJICBiZSBtZXJnZWQgb3IgYW4gZWRpdG9y IG1heSBhcHBlYXIgb24gc2NyZWVuIGZvciBhIG1hbnVhbA0KKwkgIG1lcmdl LiAgVGhlIHJlc3VsdHMgb2YgZXZlcnkgc3VjY2Vzc2Z1bCBtZXJnZSB3aWxs IGJlIHNob3duIHRvDQorCSAgdGhlIHVzZXIgYXMgdGhlIHByb2Nlc3MgY29u dGludWVzLiAgQSBmYWlsZWQgb3IgaWdub3JlZCBtZXJnZQ0KKwkgIHdpbGwg Y2F1c2UgdGhlIHByb2Nlc3MgdG8gYWJvcnQuICBVc2VycyBtYXkgd2lzaCB0 byBtYWtlIGENCisJICBiYWNrdXAgb2YgPGZpbGVuYW1lIGNsYXNzPSJkaXJl Y3RvcnkiPi9ldGM8L2ZpbGVuYW1lPiBhbmQNCisJICBtYW51YWxseSBtZXJn ZSBpbXBvcnRhbnQgZmlsZXMsIHN1Y2ggYXMNCisJICA8ZmlsZW5hbWU+bWFz dGVyLnBhc3N3ZDwvZmlsZW5hbWU+IG9yDQorCSAgPGZpbGVuYW1lPmdyb3Vw PC9maWxlbmFtZT4gYXQgYSBsYXRlciB0aW1lLjwvcGFyYT4NCiANCi0gICAg ICA8bm90ZT4NCi0JPHBhcmE+VGhlIHN5c3RlbSBpcyBub3QgYmVpbmcgYWx0 ZXJlZCB5ZXQsIGFsbCBwYXRjaGluZyBhbmQNCi0JICBtZXJnaW5nIGlzIGhh cHBlbmluZyBpbiBhbm90aGVyIGRpcmVjdG9yeS4gIFdoZW4gYWxsDQotCSAg cGF0Y2hlcyBoYXZlIGJlZW4gYXBwbGllZCBzdWNjZXNzZnVsbHksIGFsbCBj b25maWd1cmF0aW9uDQotCSAgZmlsZXMgaGF2ZSBiZWVuIG1lcmdlZCBhbmQg aXQgc2VlbXMgdGhlIHByb2Nlc3Mgd2lsbCBnbw0KLQkgIHNtb290aGx5LCB0 aGUgY2hhbmdlcyB3aWxsIG5lZWQgdG8gYmUgY29tbWl0dGVkIGJ5IHRoZQ0K LQkgIHVzZXIuPC9wYXJhPg0KLSAgICAgIDwvbm90ZT4NCisJPG5vdGU+DQor CSAgPHBhcmE+VGhlIHN5c3RlbSBpcyBub3QgYmVpbmcgYWx0ZXJlZCB5ZXQs IGFsbCBwYXRjaGluZyBhbmQNCisJICAgIG1lcmdpbmcgaXMgaGFwcGVuaW5n IGluIGFub3RoZXIgZGlyZWN0b3J5LiAgV2hlbiBhbGwNCisJICAgIHBhdGNo ZXMgaGF2ZSBiZWVuIGFwcGxpZWQgc3VjY2Vzc2Z1bGx5LCBhbGwgY29uZmln dXJhdGlvbg0KKwkgICAgZmlsZXMgaGF2ZSBiZWVuIG1lcmdlZCBhbmQgaXQg c2VlbXMgdGhlIHByb2Nlc3Mgd2lsbCBnbw0KKwkgICAgc21vb3RobHksIHRo ZSBjaGFuZ2VzIHdpbGwgbmVlZCB0byBiZSBjb21taXR0ZWQgYnkgdGhlDQor CSAgICB1c2VyLjwvcGFyYT4NCisJPC9ub3RlPg0KIA0KLSAgICAgIDxwYXJh Pk9uY2UgdGhpcyBwcm9jZXNzIGlzIGNvbXBsZXRlLCB0aGUgdXBncmFkZSBt YXkgYmUNCi0JY29tbWl0dGVkIHRvIGRpc2sgdXNpbmcgdGhlIGZvbGxvd2lu ZyBjb21tYW5kLjwvcGFyYT4NCisJPHBhcmE+T25jZSB0aGlzIHByb2Nlc3Mg aXMgY29tcGxldGUsIHRoZSB1cGdyYWRlIG1heSBiZQ0KKwkgIGNvbW1pdHRl ZCB0byBkaXNrIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZC48L3BhcmE+ DQogDQotICAgICAgPHNjcmVlbj4mcHJvbXB0LnJvb3Q7IDx1c2VyaW5wdXQ+ ZnJlZWJzZC11cGRhdGUgaW5zdGFsbDwvdXNlcmlucHV0Pjwvc2NyZWVuPg0K Kwk8c2NyZWVuPiZwcm9tcHQucm9vdDsgPHVzZXJpbnB1dD5mcmVlYnNkLXVw ZGF0ZSBpbnN0YWxsPC91c2VyaW5wdXQ+PC9zY3JlZW4+DQogDQotICAgICAg PHBhcmE+VGhlIGtlcm5lbCBhbmQga2VybmVsIG1vZHVsZXMgd2lsbCBiZSBw YXRjaGVkIGZpcnN0LiAgQXQNCi0JdGhpcyBwb2ludCB0aGUgbWFjaGluZSBt dXN0IGJlIHJlYm9vdGVkLiAgSWYgdGhlIHN5c3RlbSB3YXMNCi0JcnVubmlu ZyB3aXRoIGEgY3VzdG9tIGtlcm5lbCwgdXNlIHRoZSAmbWFuLm5leHRib290 Ljg7IGNvbW1hbmQNCi0JdG8gc2V0IHRoZSBrZXJuZWwgZm9yIHRoZSBuZXh0 IGJvb3QgdG8NCi0JPGZpbGVuYW1lIGNsYXNzPSJkaXJlY3RvcnkiPi9ib290 L0dFTkVSSUM8L2ZpbGVuYW1lPiAod2hpY2gNCi0Jd2FzIHVwZGF0ZWQpOjwv cGFyYT4NCisJPHBhcmE+VGhlIGtlcm5lbCBhbmQga2VybmVsIG1vZHVsZXMg d2lsbCBiZSBwYXRjaGVkIGZpcnN0LiAgQXQNCisJICB0aGlzIHBvaW50IHRo ZSBtYWNoaW5lIG11c3QgYmUgcmVib290ZWQuICBJZiB0aGUgc3lzdGVtIHdh cw0KKwkgIHJ1bm5pbmcgd2l0aCBhIGN1c3RvbSBrZXJuZWwsIHVzZSB0aGUg Jm1hbi5uZXh0Ym9vdC44OyBjb21tYW5kDQorCSAgdG8gc2V0IHRoZSBrZXJu ZWwgZm9yIHRoZSBuZXh0IGJvb3QgdG8NCisJICA8ZmlsZW5hbWUgY2xhc3M9 ImRpcmVjdG9yeSI+L2Jvb3QvR0VORVJJQzwvZmlsZW5hbWU+ICh3aGljaA0K KwkgIHdhcyB1cGRhdGVkKTo8L3BhcmE+DQogDQotICAgICAgPHNjcmVlbj4m cHJvbXB0LnJvb3Q7IDx1c2VyaW5wdXQ+bmV4dGJvb3QgLWsgR0VORVJJQzwv dXNlcmlucHV0Pjwvc2NyZWVuPg0KKwk8c2NyZWVuPiZwcm9tcHQucm9vdDsg PHVzZXJpbnB1dD5uZXh0Ym9vdCAtayBHRU5FUklDPC91c2VyaW5wdXQ+PC9z Y3JlZW4+DQogDQotICAgICAgPHdhcm5pbmc+DQotCTxwYXJhPkJlZm9yZSBy ZWJvb3Rpbmcgd2l0aCB0aGUgPGZpbGVuYW1lPkdFTkVSSUM8L2ZpbGVuYW1l Pg0KLQkgIGtlcm5lbCwgbWFrZSBzdXJlIGl0IGNvbnRhaW5zIGFsbCBkcml2 ZXJzIHJlcXVpcmVkIGZvciB5b3VyDQotCSAgc3lzdGVtIHRvIGJvb3QgcHJv cGVybHkgKGFuZCBjb25uZWN0IHRvIHRoZSBuZXR3b3JrLCBpZiB0aGUNCi0J ICBtYWNoaW5lIHRoYXQgaXMgYmVpbmcgdXBkYXRlZCBpcyBhY2Nlc3NlZCBy ZW1vdGVseSkuICBJbg0KLQkgIHBhcnRpY3VsYXIsIGlmIHRoZSBwcmV2aW91 c2x5IHJ1bm5pbmcgY3VzdG9tIGtlcm5lbA0KLQkgIGNvbnRhaW5lZCBidWls dC1pbiBmdW5jdGlvbmFsaXR5IHVzdWFsbHkgcHJvdmlkZWQgYnkga2VybmVs DQotCSAgbW9kdWxlcywgbWFrZSBzdXJlIHRvIHRlbXBvcmFyaWx5IGxvYWQg dGhlc2UgbW9kdWxlcyBpbnRvDQotCSAgdGhlIDxmaWxlbmFtZT5HRU5FUklD PC9maWxlbmFtZT4ga2VybmVsIHVzaW5nIHRoZQ0KLQkgIDxmaWxlbmFtZT4v Ym9vdC9sb2FkZXIuY29uZjwvZmlsZW5hbWU+IGZhY2lsaXR5LiAgWW91IG1h eQ0KLQkgIGFsc28gd2lzaCB0byBkaXNhYmxlIG5vbi1lc3NlbnRpYWwgc2Vy dmljZXMsIGRpc2sgYW5kDQotCSAgbmV0d29yayBtb3VudHMsIGV0Yy4gdW50 aWwgdGhlIHVwZ3JhZGUgcHJvY2VzcyBpcw0KLQkgIGNvbXBsZXRlLjwvcGFy YT4NCi0gICAgICA8L3dhcm5pbmc+DQorCTx3YXJuaW5nPg0KKwkgIDxwYXJh PkJlZm9yZSByZWJvb3Rpbmcgd2l0aCB0aGUgPGZpbGVuYW1lPkdFTkVSSUM8 L2ZpbGVuYW1lPg0KKwkgICAga2VybmVsLCBtYWtlIHN1cmUgaXQgY29udGFp bnMgYWxsIGRyaXZlcnMgcmVxdWlyZWQgZm9yIHlvdXINCisJICAgIHN5c3Rl bSB0byBib290IHByb3Blcmx5IChhbmQgY29ubmVjdCB0byB0aGUgbmV0d29y aywgaWYgdGhlDQorCSAgICBtYWNoaW5lIHRoYXQgaXMgYmVpbmcgdXBkYXRl ZCBpcyBhY2Nlc3NlZCByZW1vdGVseSkuICBJbg0KKwkgICAgcGFydGljdWxh ciwgaWYgdGhlIHByZXZpb3VzbHkgcnVubmluZyBjdXN0b20ga2VybmVsDQor CSAgICBjb250YWluZWQgYnVpbHQtaW4gZnVuY3Rpb25hbGl0eSB1c3VhbGx5 IHByb3ZpZGVkIGJ5IGtlcm5lbA0KKwkgICAgbW9kdWxlcywgbWFrZSBzdXJl IHRvIHRlbXBvcmFyaWx5IGxvYWQgdGhlc2UgbW9kdWxlcyBpbnRvDQorCSAg ICB0aGUgPGZpbGVuYW1lPkdFTkVSSUM8L2ZpbGVuYW1lPiBrZXJuZWwgdXNp bmcgdGhlDQorCSAgICA8ZmlsZW5hbWU+L2Jvb3QvbG9hZGVyLmNvbmY8L2Zp bGVuYW1lPiBmYWNpbGl0eS4gIFlvdSBtYXkNCisJICAgIGFsc28gd2lzaCB0 byBkaXNhYmxlIG5vbi1lc3NlbnRpYWwgc2VydmljZXMsIGRpc2sgYW5kDQor CSAgICBuZXR3b3JrIG1vdW50cywgZXRjLiB1bnRpbCB0aGUgdXBncmFkZSBw cm9jZXNzIGlzDQorCSAgICBjb21wbGV0ZS48L3BhcmE+DQorCTwvd2Fybmlu Zz4NCiANCi0gICAgICA8cGFyYT5UaGUgbWFjaGluZSBzaG91bGQgbm93IGJl IHJlc3RhcnRlZCB3aXRoIHRoZSB1cGRhdGVkDQotCWtlcm5lbDo8L3BhcmE+ DQorCTxwYXJhPlRoZSBtYWNoaW5lIHNob3VsZCBub3cgYmUgcmVzdGFydGVk IHdpdGggdGhlIHVwZGF0ZWQNCisJICBrZXJuZWw6PC9wYXJhPg0KIA0KLSAg ICAgIDxzY3JlZW4+JnByb21wdC5yb290OyA8dXNlcmlucHV0PnNodXRkb3du IC1yIG5vdzwvdXNlcmlucHV0Pjwvc2NyZWVuPg0KKwk8c2NyZWVuPiZwcm9t cHQucm9vdDsgPHVzZXJpbnB1dD5zaHV0ZG93biAtciBub3c8L3VzZXJpbnB1 dD48L3NjcmVlbj4NCiANCi0gICAgICA8cGFyYT5PbmNlIHRoZSBzeXN0ZW0g aGFzIGNvbWUgYmFjayBvbmxpbmUsDQotCTxjb21tYW5kPmZyZWVic2QtdXBk YXRlPC9jb21tYW5kPiB3aWxsIG5lZWQgdG8gYmUgc3RhcnRlZA0KLQlhZ2Fp bi4gIFRoZSBzdGF0ZSBvZiB0aGUgcHJvY2VzcyBoYXMgYmVlbiBzYXZlZCBh bmQgdGh1cywNCi0JPGNvbW1hbmQ+ZnJlZWJzZC11cGRhdGU8L2NvbW1hbmQ+ IHdpbGwgbm90IHN0YXJ0IGZyb20gdGhlDQotCWJlZ2lubmluZywgYnV0IHdp bGwgcmVtb3ZlIGFsbCBvbGQgc2hhcmVkIGxpYnJhcmllcyBhbmQgb2JqZWN0 DQotCWZpbGVzLiAgVG8gY29udGludWUgdG8gdGhpcyBzdGFnZSwgaXNzdWUg dGhlIGZvbGxvd2luZw0KLQljb21tYW5kOjwvcGFyYT4NCisJPHBhcmE+T25j ZSB0aGUgc3lzdGVtIGhhcyBjb21lIGJhY2sgb25saW5lLA0KKwkgIDxjb21t YW5kPmZyZWVic2QtdXBkYXRlPC9jb21tYW5kPiB3aWxsIG5lZWQgdG8gYmUg c3RhcnRlZA0KKwkgIGFnYWluLiAgVGhlIHN0YXRlIG9mIHRoZSBwcm9jZXNz IGhhcyBiZWVuIHNhdmVkIGFuZCB0aHVzLA0KKwkgIDxjb21tYW5kPmZyZWVi c2QtdXBkYXRlPC9jb21tYW5kPiB3aWxsIG5vdCBzdGFydCBmcm9tIHRoZQ0K KwkgIGJlZ2lubmluZywgYnV0IHdpbGwgcmVtb3ZlIGFsbCBvbGQgc2hhcmVk IGxpYnJhcmllcyBhbmQgb2JqZWN0DQorCSAgZmlsZXMuICBUbyBjb250aW51 ZSB0byB0aGlzIHN0YWdlLCBpc3N1ZSB0aGUgZm9sbG93aW5nDQorCSAgY29t bWFuZDo8L3BhcmE+DQogDQotICAgICAgPHNjcmVlbj4mcHJvbXB0LnJvb3Q7 IDx1c2VyaW5wdXQ+ZnJlZWJzZC11cGRhdGUgaW5zdGFsbDwvdXNlcmlucHV0 Pjwvc2NyZWVuPg0KKwk8c2NyZWVuPiZwcm9tcHQucm9vdDsgPHVzZXJpbnB1 dD5mcmVlYnNkLXVwZGF0ZSBpbnN0YWxsPC91c2VyaW5wdXQ+PC9zY3JlZW4+ DQogDQotICAgICAgPG5vdGU+DQotCTxwYXJhPkRlcGVuZGluZyBvbiB3aGV0 aGVyIGFueSBsaWJyYXJpZXMgdmVyc2lvbiBudW1iZXJzIGdvdA0KLQkgIGJ1 bXBlZCwgdGhlcmUgbWF5IG9ubHkgYmUgdHdvIGluc3RhbGwgcGhhc2VzIGlu c3RlYWQgb2YNCi0JICB0aHJlZS48L3BhcmE+DQotICAgICAgPC9ub3RlPg0K Kwk8bm90ZT4NCisJICA8cGFyYT5EZXBlbmRpbmcgb24gd2hldGhlciBhbnkg bGlicmFyaWVzIHZlcnNpb24gbnVtYmVycyBnb3QNCisJICAgIGJ1bXBlZCwg dGhlcmUgbWF5IG9ubHkgYmUgdHdvIGluc3RhbGwgcGhhc2VzIGluc3RlYWQg b2YNCisJICAgIHRocmVlLjwvcGFyYT4NCisJPC9ub3RlPg0KKyAgICAgIDwv c2VjdDM+DQogDQotICAgICAgPHBhcmE+QWxsIHRoaXJkIHBhcnR5IHNvZnR3 YXJlIHdpbGwgbm93IG5lZWQgdG8gYmUgcmVidWlsdCBhbmQNCi0JcmUtaW5z dGFsbGVkLiAgVGhpcyBpcyByZXF1aXJlZCBhcyBpbnN0YWxsZWQgc29mdHdh cmUgbWF5DQotCWRlcGVuZCBvbiBsaWJyYXJpZXMgd2hpY2ggaGF2ZSBiZWVu IHJlbW92ZWQgZHVyaW5nIHRoZSB1cGdyYWRlDQotCXByb2Nlc3MuICBUaGUN Ci0JPGZpbGVuYW1lIHJvbGU9InBhY2thZ2UiPnBvcnRzLW1nbXQvcG9ydHVw Z3JhZGU8L2ZpbGVuYW1lPg0KLQljb21tYW5kIG1heSBiZSB1c2VkIHRvIGF1 dG9tYXRlIHRoaXMgcHJvY2Vzcy4gIFRoZSBmb2xsb3dpbmcNCi0JY29tbWFu ZHMgbWF5IGJlIHVzZWQgdG8gYmVnaW4gdGhpcyBwcm9jZXNzOjwvcGFyYT4N CisgICAgICA8c2VjdDMgaWQ9ImZyZWVic2R1cGRhdGUtcG9ydHNyZWJ1aWxk Ij4NCisJPHRpdGxlPlJlYnVpbGRpbmcgUG9ydHMgQWZ0ZXIgYSBNYWpvciBW ZXJzaW9uIFVwZ3JhZGU8L3RpdGxlPg0KIA0KLSAgICAgIDxzY3JlZW4+JnBy b21wdC5yb290OyA8dXNlcmlucHV0PnBvcnR1cGdyYWRlIC1mIHJ1Ynk8L3Vz ZXJpbnB1dD4NCisJPHBhcmE+QWZ0ZXIgYSBtYWpvciB2ZXJzaW9uIHVwZ3Jh ZGUsIGFsbCB0aGlyZCBwYXJ0eSBzb2Z0d2FyZSB3aWxsIG5vdyBuZWVkIHRv IGJlIHJlYnVpbHQgYW5kDQorCSAgcmUtaW5zdGFsbGVkLiAgVGhpcyBpcyBy ZXF1aXJlZCBhcyBpbnN0YWxsZWQgc29mdHdhcmUgbWF5DQorCSAgZGVwZW5k IG9uIGxpYnJhcmllcyB3aGljaCBoYXZlIGJlZW4gcmVtb3ZlZCBkdXJpbmcg dGhlIHVwZ3JhZGUNCisJICBwcm9jZXNzLiAgVGhlDQorCSAgPGZpbGVuYW1l IHJvbGU9InBhY2thZ2UiPnBvcnRzLW1nbXQvcG9ydHVwZ3JhZGU8L2ZpbGVu YW1lPg0KKwkgIGNvbW1hbmQgbWF5IGJlIHVzZWQgdG8gYXV0b21hdGUgdGhp cyBwcm9jZXNzLiAgVGhlIGZvbGxvd2luZw0KKwkgIGNvbW1hbmRzIG1heSBi ZSB1c2VkIHRvIGJlZ2luIHRoaXMgcHJvY2Vzczo8L3BhcmE+DQorDQorICAg ICAgICA8c2NyZWVuPiZwcm9tcHQucm9vdDsgPHVzZXJpbnB1dD5wb3J0dXBn cmFkZSAtZiBydWJ5PC91c2VyaW5wdXQ+DQogJnByb21wdC5yb290OyA8dXNl cmlucHV0PnJtIC92YXIvZGIvcGtnL3BrZ2RiLmRiPC91c2VyaW5wdXQ+DQog JnByb21wdC5yb290OyA8dXNlcmlucHV0PnBvcnR1cGdyYWRlIC1mIHJ1Ynkx OC1iZGI8L3VzZXJpbnB1dD4NCiAmcHJvbXB0LnJvb3Q7IDx1c2VyaW5wdXQ+ cm0gL3Zhci9kYi9wa2cvcGtnZGIuZGIgL3Vzci9wb3J0cy9JTkRFWC0qLmRi PC91c2VyaW5wdXQ+DQogJnByb21wdC5yb290OyA8dXNlcmlucHV0PnBvcnR1 cGdyYWRlIC1hZjwvdXNlcmlucHV0Pjwvc2NyZWVuPg0KIA0KLSAgICAgIDxw YXJhPk9uY2UgdGhpcyBoYXMgY29tcGxldGVkLCBmaW5pc2ggdGhlIHVwZ3Jh ZGUgcHJvY2VzcyB3aXRoIGENCi0JZmluYWwgY2FsbCB0byA8Y29tbWFuZD5m cmVlYnNkLXVwZGF0ZTwvY29tbWFuZD4uICBJc3N1ZSB0aGUNCi0JZm9sbG93 aW5nIGNvbW1hbmQgdG8gdGllIHVwIGFsbCBsb29zZSBlbmRzIGluIHRoZSB1 cGdyYWRlDQotCXByb2Nlc3M6PC9wYXJhPg0KKyAgICAgICAgPHBhcmE+T25j ZSB0aGlzIGhhcyBjb21wbGV0ZWQsIGZpbmlzaCB0aGUgdXBncmFkZSBwcm9j ZXNzIHdpdGggYQ0KKwkgIGZpbmFsIGNhbGwgdG8gPGNvbW1hbmQ+ZnJlZWJz ZC11cGRhdGU8L2NvbW1hbmQ+LiAgSXNzdWUgdGhlDQorCSAgZm9sbG93aW5n IGNvbW1hbmQgdG8gdGllIHVwIGFsbCBsb29zZSBlbmRzIGluIHRoZSB1cGdy YWRlDQorCSAgcHJvY2Vzczo8L3BhcmE+DQogDQotICAgICAgPHNjcmVlbj4m cHJvbXB0LnJvb3Q7IDx1c2VyaW5wdXQ+ZnJlZWJzZC11cGRhdGUgaW5zdGFs bDwvdXNlcmlucHV0Pjwvc2NyZWVuPg0KKwk8c2NyZWVuPiZwcm9tcHQucm9v dDsgPHVzZXJpbnB1dD5mcmVlYnNkLXVwZGF0ZSBpbnN0YWxsPC91c2VyaW5w dXQ+PC9zY3JlZW4+DQogDQotICAgICAgPHBhcmE+SWYgdGhlIDxmaWxlbmFt ZT5HRU5FUklDPC9maWxlbmFtZT4ga2VybmVsIHdhcyB0ZW1wb3JhcmlseQ0K LQl1c2VkLCB0aGlzIGlzIHRoZSB0aW1lIHRvIGJ1aWxkIGFuZCBpbnN0YWxs IGEgbmV3IGN1c3RvbQ0KLQlrZXJuZWwgaW4gdGhlIHVzdWFsIHdheS48L3Bh cmE+DQorCTxwYXJhPklmIHRoZSA8ZmlsZW5hbWU+R0VORVJJQzwvZmlsZW5h bWU+IGtlcm5lbCB3YXMgdGVtcG9yYXJpbHkNCisJICB1c2VkLCB0aGlzIGlz IHRoZSB0aW1lIHRvIGJ1aWxkIGFuZCBpbnN0YWxsIGEgbmV3IGN1c3RvbQ0K KwkgIGtlcm5lbCBpbiB0aGUgdXN1YWwgd2F5LjwvcGFyYT4NCiANCi0gICAg ICA8cGFyYT5SZWJvb3QgdGhlIG1hY2hpbmUgaW50byB0aGUgbmV3ICZvczsg dmVyc2lvbi4gIFRoZSBwcm9jZXNzDQotCWlzIGNvbXBsZXRlLjwvcGFyYT4N CisJPHBhcmE+UmVib290IHRoZSBtYWNoaW5lIGludG8gdGhlIG5ldyAmb3M7 IHZlcnNpb24uICBUaGUgcHJvY2Vzcw0KKwkgIGlzIGNvbXBsZXRlLjwvcGFy YT4NCisgICAgICA8L3NlY3QzPg0KICAgICA8L3NlY3QyPg0KIA0KICAgICA8 c2VjdDIgaWQ9ImZyZWVic2R1cGRhdGUtc3lzdGVtLWNvbXBhcmlzb24iPg0K --3512871622-1184402412-1358107748=:17568--