<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>39434</bug_id>
          
          <creation_ts>2010-05-20 10:54:34 -0700</creation_ts>
          <short_desc>REGRESSION (r59811): Geolocation callbacks cannot be created</short_desc>
          <delta_ts>2010-06-01 12:50:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://chatroam.com/webkit/geolocation.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Scott Menor">smenor</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>andreip</cc>
    
    <cc>ap</cc>
    
    <cc>eric</cc>
    
    <cc>mrobinson</cc>
    
    <cc>sfalken</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>228463</commentid>
    <comment_count>0</comment_count>
    <who name="Scott Menor">smenor</who>
    <bug_when>2010-05-20 10:54:34 -0700</bug_when>
    <thetext>navigator.geolocation.watchPosition(positionCallback)

fails and returns 

Error: TYPE_MISMATCH_ERR: DOM Exception 17</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228640</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-20 17:12:52 -0700</bug_when>
    <thetext>See also: bug 39454.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231401</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-27 11:29:42 -0700</bug_when>
    <thetext>*** Bug 39454 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231443</commentid>
    <comment_count>3</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-05-27 13:36:03 -0700</bug_when>
    <thetext>Is this with client-based geolocation, or the original geolocation implementation, or both?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231450</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-27 13:47:26 -0700</bug_when>
    <thetext>This is an issue in JavaScriptCore bindings, so it&apos;s with both. I have a fix, but I need to make tests work first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231984</commentid>
    <comment_count>5</comment_count>
      <attachid>57391</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-28 15:49:41 -0700</bug_when>
    <thetext>Created attachment 57391
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231990</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-28 15:53:40 -0700</bug_when>
    <thetext>Attachment 57391 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKitTools/DumpRenderTree/mac/MockGeolocationProvider.h:36:  _registeredViews is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231994</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-28 15:58:44 -0700</bug_when>
    <thetext>Attachment 57391 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/2654017</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231997</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-28 16:03:38 -0700</bug_when>
    <thetext>I guess touching didn&apos;t work. Not sure how the build can be fixed without manual intervention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232012</commentid>
    <comment_count>9</comment_count>
      <attachid>57391</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-28 16:46:38 -0700</bug_when>
    <thetext>Comment on attachment 57391
proposed fix

&gt; +2010-05-28  Alexey Proskuryakov  &lt;ap@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Need a short description and bug URL (OOPS!)
&gt; +
&gt; +        * bindings/js/JSGeolocationCustom.cpp:
&gt; +        (WebCore::createPositionCallback):
&gt; +        (WebCore::createPositionErrorCallback):

Extra empty change log.

&gt;      // The spec specifies &apos;FunctionOnly&apos; for this object.
&gt; -    if (!value.inherits(&amp;InternalFunction::info)) {
&gt; +    // FIXME: This check disallows callable objects created via JSC API. It&apos;s not clear what exactly the specification intends to allow.
&gt; +    if (!value.inherits(&amp;JSFunction::info)) {
&gt;          setDOMException(exec, TYPE_MISMATCH_ERR);
&gt;          return 0;
&gt;      }

This sure is peculiar. We need to find out what FunctionOnly means! Normally in JavaScript we just try to call things.

&gt; +    // FIXME: What&apos;s the reason for isGeolocationPermissionSet() existence? The delegate should always respond by either allow or deny.
&gt; +    if (gLayoutTestController-&gt;isGeolocationPermissionSet() &amp;&amp; gLayoutTestController-&gt;geolocationPermission())
&gt; +        [listener allow];
&gt; +    else
&gt; +        [listener deny];

Maybe we want to test the asynchrony of the call at some point. The client is allowed to wait a while before doing allow or deny and we might want to test those cases. Just a guess.

&gt; +2010-05-28  Alexey Proskuryakov  &lt;ap@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Need a short description and bug URL (OOPS!)
&gt; +
&gt; +        * fast/dom/Geolocation/script-tests/error.js:
&gt; +        * fast/dom/Geolocation/script-tests/maximum-age.js:
&gt; +        * fast/dom/Geolocation/script-tests/reentrant-error.js:
&gt; +        * fast/dom/Geolocation/script-tests/watch.js:
&gt; +        * platform/gtk/Skipped:
&gt; +        * platform/mac/Skipped:

Another excess change log here.

The Mac EWS says this fails to build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232388</commentid>
    <comment_count>10</comment_count>
      <attachid>57391</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-05-31 08:27:38 -0700</bug_when>
    <thetext>Comment on attachment 57391
proposed fix

WebCore/bindings/js/JSGeolocationCustom.cpp:42
 +  #endif
What has changed such that GeolocationService.h can no longer be included when CLIENT_BASED_GEOLOCATION is not defined? If the contents of the header do need to be guarded, isn&apos;t the pattern to guard the contents, not the include site?

WebKitTools/DumpRenderTree/mac/UIDelegate.mm:160
 +      // FIXME: What&apos;s the reason for isGeolocationPermissionSet() existence? The delegate should always respond by either allow or deny.
Yes, my intent was to provide the ability for the embedder to make a delayed response to a permission request. The Geolocation object allows the call to requestGeolocationPermissionForFrame() to be synchronous or asynchronous. We should probably add a layout test to test the delayed permission response.

LayoutTests/fast/dom/Geolocation/script-tests/error.js:6
 +  window.layoutTestController.setGeolocationPermission(true);
The Geolocation spec only requires that permission be obtained from the user before a position is returned to JS. If the result of the Geolocation request is an error, permission does not need to be obtained before we call back. The non-client-based Geolocation implementation implements this. I assume this means that the client-based implementation requires permission to make an error callback? Is this intentional?

LayoutTests/platform/gtk/Skipped: 
 +  fast/dom/Geolocation/timeout-zero.html
So these failures are due to JSC binding problems? Note that all of the Geolocation layout tests are passing on Android and Chromium with V8 using non-client-based Geolocation.

WebCore/bindings/js/JSGeolocationCustom.cpp:69
 +      // FIXME: This check disallows callable objects created via JSC API. It&apos;s not clear what exactly the specification intends to allow.
My understanding of the spec is that it intends to allow JS function objects, but not objects with a &apos;handleEvent&apos; property. See http://lists.w3.org/Archives/Public/public-geolocation/2009Jun/0173.html for the relevant discussion on the W3C Geolocation mailing list.

The change where I added this code is http://trac.webkit.org/changeset/47252 and the V8 equivalent is http://trac.webkit.org/changeset/51540</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232724</commentid>
    <comment_count>11</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-01 06:46:13 -0700</bug_when>
    <thetext>*** Bug 39971 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232754</commentid>
    <comment_count>12</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-01 08:04:48 -0700</bug_when>
    <thetext>why cannot the callbacks be InternalFunction?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232784</commentid>
    <comment_count>13</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-01 09:44:06 -0700</bug_when>
    <thetext>&gt; Yes, my intent was to provide the ability for the embedder to make a delayed
&gt; response to a permission request. The Geolocation object allows the call to
&gt; requestGeolocationPermissionForFrame() to be synchronous or asynchronous. We
&gt; should probably add a layout test to test the delayed permission response.
Filed Bug 40002 to track this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232805</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-01 10:19:27 -0700</bug_when>
    <thetext>&gt; What has changed such that GeolocationService.h can no longer be included when 
&gt; CLIENT_BASED_GEOLOCATION is not defined?

It can be included, but that causes confusion. I spent a considerable amount of time figuring out that everything with &quot;GeolocationService&quot; in the name is completely irrelevant for client based implementation, and this simple change would have helped.

&gt; isn&apos;t the pattern to guard the contents, not the include site?

The normal pattern is for features that can be disabled, so there is very little potential for confusion. Here, we have two separate implementations co-existing with the help of ifdefs, which is a different case.

&gt; We should probably add a layout test to test the delayed permission response.

I changed the FIXME comment. The delayed permission code path isn&apos;t implemented in cross-platform LayoutTestController.cpp, so currently checking for permission being unset is useless though.

&gt; The Geolocation spec only requires that permission be obtained from the user before a position is returned to JS.

I don&apos;t think that&apos;s accurate. First, this is dangerous, since this basically allows an application to test whether one&apos;s notebook is on WiFi (since that&apos;s the source of information for most notebooks), so letting failed requests go through without asking for permission would cause a minor information leak. Second, my reading of the spec is different:

&quot;Furthermore, the implementation should always obtain the user&apos;s permission to share location before executing any of the getCurrentPosition or watchPosition steps described above. If the user grants permission, the appropriate callback must be invoked as described above. If the user denies permission, the errorCallback (if present) must be invoked with code PERMISSION_DENIED, irrespective of any other errors encountered in the above steps.&quot;

&gt; So these failures are due to JSC binding problems?

See duplicate bug - Gtk tests were disabled due to this problem. Apparently, Android hasn&apos;t synced JSC up to r59811 yet.

&gt; My understanding of the spec is that it intends to allow JS function objects, 
&gt; but not objects with a &apos;handleEvent&apos; property.

I see. This still leaves the question of what a &quot;JS function object&quot; is according to WebIDL, or why Geolocation wants to be different from the rest of the Web platform. I couldn&apos;t find an explanation of the latter in the mailing list link you provided.

As mentioned in the FIXME comment, callable objects created via JSC API (like layoutTestController.setGeolocationPermission) should probably work as callback parameters. But current WebIDL text prevents that, and it&apos;s not trivial to fix. I don&apos;t see why it&apos;s worth fixing, given that all other callback functions on the Web don&apos;t require such trickery.

&gt; why cannot the callbacks be InternalFunction?

I don&apos;t understand this question. Are you referring to the FIXME comment I discuss above? Then yes, the trait of being callable is not relevant to what the object inherits from. In JSC, there are two ways to chack for being callable:
1) Check callData return value. That&apos;s the closest to just try and call the object, but it includes RegExp objects, which we may or may not want to exclude;
2) Ignore inheritance, and check that className is &quot;Function&quot;. That seems to match the current WebIDL text best, but it doesn&apos;t cover objects created via API.

Here, I&apos;m trying to fix the regression in basic case. Discussing whether we want to fix or ignore the spec should probably take place in a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232807</commentid>
    <comment_count>15</comment_count>
      <attachid>57561</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-01 10:20:06 -0700</bug_when>
    <thetext>Created attachment 57561
proposed fix

Removed empty ChangeLog entries, re-worded a FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232813</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-01 10:25:31 -0700</bug_when>
    <thetext>Attachment 57561 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKitTools/DumpRenderTree/mac/MockGeolocationProvider.h:36:  _registeredViews is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232814</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-01 10:26:31 -0700</bug_when>
    <thetext>Attachment 57561 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/2784056</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232828</commentid>
    <comment_count>18</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-06-01 10:46:23 -0700</bug_when>
    <thetext>&gt; &gt; The Geolocation spec only requires that permission be obtained from the user before a position is returned to JS.
&gt; 
&gt; I don&apos;t think that&apos;s accurate.
Note the use of &apos;must&apos; and &apos;should&apos; in ...
&apos;For both getCurrentPosition and watchPosition, the implementation must never invoke the successCallback without having first obtained permission from the user to share location. Furthermore, the implementation should always obtain the user&apos;s permission to share location before executing any of the getCurrentPosition or watchPosition steps described above.&apos;

Implementers are not required to follow a &apos;should&apos;. On Android we chose not to prompt the user for permission until we&apos;re sure we have a position, as the usability cost of the prompt is high.

I don&apos;t think that WebCore should enforce that permission is required to make error callbacks. If an embedder chooses to enforce this, they can do so outside of WebCore. However, updating LayoutTests to work in both cases is fine with me.

&gt; Here, I&apos;m trying to fix the regression in basic case. Discussing whether we
&gt; want to fix or ignore the spec should probably take place in a separate bug.
Agreed, I was just trying to provide background. Can you file a bug for this and we can discuss with the spec authors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232834</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-01 10:49:04 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/60488&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232861</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-01 11:26:23 -0700</bug_when>
    <thetext>&gt; Implementers are not required to follow a &apos;should&apos;. On Android we chose not to prompt the user for permission until we&apos;re sure we have a position, as the usability cost of the prompt is high.

I see, thanks.

&gt; Agreed, I was just trying to provide background. Can you file a bug for this and we can discuss with the spec authors.

Filed bug 40012.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232899</commentid>
    <comment_count>21</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-01 12:18:50 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; 
&gt; &gt; why cannot the callbacks be InternalFunction?
&gt; 
&gt; I don&apos;t understand this question. Are you referring to the FIXME comment I discuss above? Then yes, the trait of being callable is not relevant to what the object inherits from. In JSC, there are two ways to chack for being callable:
&gt; 1) Check callData return value. That&apos;s the closest to just try and call the object, but it includes RegExp objects, which we may or may not want to exclude;
&gt; 2) Ignore inheritance, and check that className is &quot;Function&quot;. That seems to match the current WebIDL text best, but it doesn&apos;t cover objects created via API.
&gt; 

9   if (!value.inherits(&amp;InternalFunction::info)) {
 52 // FIXME: This check disallows callable objects created via JSC API. It&apos;s not clear what exactly the specification intends to allow.
 53 if (!value.inherits(&amp;JSFunction::info)) { 

Yes, why not just do both checks?

if (!value.inherits(&amp;InternalFunction::info) &amp;&amp; !value.inherits(&amp;JSFunction::info)) {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232907</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-01 12:37:33 -0700</bug_when>
    <thetext>&gt; Yes, why not just do both checks?

I&apos;m not sure how that would help - a JSObject with non-zero callAsFunction in JSClassDefinition can have an arbitrary type, there is no need for it to inherit from InternalFunction. Only objects created with JSObjectMakeFunctionWithCallback() would be covered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232914</commentid>
    <comment_count>23</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2010-06-01 12:50:19 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt; Yes, why not just do both checks?
&gt; I&apos;m not sure how that would help - a JSObject with non-zero callAsFunction in JSClassDefinition can have an arbitrary type, there is no need for it to inherit from InternalFunction. Only objects created with JSObjectMakeFunctionWithCallback() would be covered.

oops. I was lost. just wanted to make sure InternalFunction is not needed</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57391</attachid>
            <date>2010-05-28 15:49:41 -0700</date>
            <delta_ts>2010-06-01 10:20:06 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>Geolocation.txt</filename>
            <type>text/plain</type>
            <size>48786</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDM3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMDUtMjggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDM0CisgICAgICAgIFJF
R1JFU1NJT04gKHI1OTgxMSk6IEdlb2xvY2F0aW9uIGNhbGxiYWNrcyBjYW5ub3QgYmUgY3JlYXRl
ZAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogRG9uJ3QgYXBwZW5kIGJvdGggV2Vi
Q29yZS5HZW9sb2NhdGlvbi5leHAgYW5kIFdlYkNvcmUuQ2xpZW50QmFzZWRHZW9sb2NhdGlvbi5l
eHAsCisgICAgICAgIHRoZXkgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KKworICAgICAgICAqIFdl
YkNvcmUuR2VvbG9jYXRpb24uZXhwOiBUb3VjaGVkIHRvIGZvcmNlIC5leHAgZmlsZSByZWJ1aWxk
LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVk
IEdlb2xvY2F0aW9uU2VydmljZSByZWxhdGVkIGZpbGVzLgorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQb3Np
dGlvbkNhbGxiYWNrKTogRnVuY3Rpb25zIGRlZmluZWQgaW4gSmF2YVNjcmlwdCBjb2RlIG5vIGxv
bmdlciBpbmhlcml0CisgICAgICAgIGZyb20gSW50ZXJuYWxGdW5jdGlvbiwgdGhleSBpbmhlcml0
IGZyb20gSlNGdW5jdGlvbi4gVGhpcyBjaGVjayBpcyBzdGlsbCBpbXBlcmZlY3QsIGJlY2F1c2UK
KyAgICAgICAgaXQncyBub3QgY2xlYXIgd2hhdCBkZWZpbml0aW9uIG9mICJmdW5jdGlvbiIgc2hv
dWxkIHJlYWxseSBiZSB1c2VkLCBpZiBhbnkgLSBvdGhlciBiaW5kaW5ncworICAgICAgICBjb2Rl
IG5ldmVyIGNoZWNrcyBjYWxsYmFjayB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUG9z
aXRpb25FcnJvckNhbGxiYWNrKTogRGl0dG8uCisKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9u
Lmg6IERvbid0IGluY2x1ZGUgR2VvbG9jYXRpb25TZXJ2aWNlLmggdW5sZXNzIGl0J3MgZ29pbmcg
dG8gYmUgdXNlZC4KKworMjAxMC0wNS0yOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
ZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICog
YmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVQb3NpdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvc2l0aW9u
RXJyb3JDYWxsYmFjayk6CisKIDIwMTAtMDUtMjggIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bn
b29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQkocmV2aXNpb24gNjAzMTEpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UJKHdvcmtpbmcgY29weSkKQEAgLTkwMCwxNCArOTAwLDEzIEBAIGlmZXEgKCQoZmluZHN0cmlu
ZyBFTkFCTEVfVklERU8sJChGRUFUVVIKICAgICAgV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVT
IDo9ICQoV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTKSBXZWJDb3JlLlZpZGVvLmV4cAogZW5k
aWYKIAotCitpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX0dFT0xPQ0FUSU9OLCQoRkVBVFVSRV9E
RUZJTkVTKSksIEVOQUJMRV9HRU9MT0NBVElPTikKIGlmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVf
Q0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OLCQoRkVBVFVSRV9ERUZJTkVTKSksIEVOQUJMRV9DTElF
TlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTIDo9
ICQoV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTKSBXZWJDb3JlLkNsaWVudEJhc2VkR2VvbG9j
YXRpb24uZXhwCi1lbmRpZgotCi1pZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX0dFT0xPQ0FUSU9O
LCQoRkVBVFVSRV9ERUZJTkVTKSksIEVOQUJMRV9HRU9MT0NBVElPTikKK2Vsc2UKICAgICBXRUJD
T1JFX0VYUE9SVF9ERVBFTkRFTkNJRVMgOj0gJChXRUJDT1JFX0VYUE9SVF9ERVBFTkRFTkNJRVMp
IFdlYkNvcmUuR2VvbG9jYXRpb24uZXhwCiBlbmRpZgorZW5kaWYKIAogaWZlcSAoJChzaGVsbCBn
Y2MgLUUgLVAgLWRNICQoRlJBTUVXT1JLX0ZMQUdTKSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9QbGF0Zm9ybS5oIHwgZ3JlcCBXVEZfVVNFX1BST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxM
QkFDSyB8IGN1dCAtZCcgJyAtZjMpLCAxKQogICAgIFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lF
UyA6PSAkKFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUykgV2ViQ29yZS5Qcm90ZWN0aW9uU3Bh
Y2VBdXRoQ2FsbGJhY2suZXhwCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuR2VvbG9jYXRpb24uZXhw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5HZW9sb2NhdGlvbi5leHAJKHJldmlzaW9u
IDYwMzExKQorKysgV2ViQ29yZS9XZWJDb3JlLkdlb2xvY2F0aW9uLmV4cAkod29ya2luZyBjb3B5
KQpAQCAtMSwyICsxLDMgQEAKIF9fWk43V2ViQ29yZTIyR2VvbG9jYXRpb25TZXJ2aWNlTW9jazEx
c2V0UG9zaXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTFHZW9wb3NpdGlvbkVFRQogX19aTjdX
ZWJDb3JlMjJHZW9sb2NhdGlvblNlcnZpY2VNb2NrOHNldEVycm9yRU4zV1RGMTBQYXNzUmVmUHRy
SU5TXzEzUG9zaXRpb25FcnJvckVFRQorCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjAzMTEpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE3OSw4ICsxMTc5LDYg
QEAKIAkJNTlCNTk3NzMxMTA4NjU2QjAwNzE1OUU4IC8qIEJyaWRnZUpTQy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUI1OTc3MjExMDg2NTZCMDA3
MTU5RTggLyogQnJpZGdlSlNDLmNwcCAqLzsgfTsKIAkJNTlCNTk3NzUxMTA4NjU3OTAwNzE1OUU4
IC8qIEJyaWRnZUpTQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTlCNTk3NzQxMTA4NjU3OTAwNzE1OUU4IC8qIEJyaWRnZUpTQy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU5QkMzOTNGMTEwNTRBMTMw
MEZEODVEQiAvKiBKYXZhU3RyaW5nSlNDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1OUJDMzkzRTExMDU0QTEzMDBGRDg1REIgLyogSmF2YVN0cmluZ0pT
Qy5oICovOyB9OwotCQk1OUM3N0YyQTEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2
aWNlTW9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1OUM3N0YyODEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAg
Ki87IH07Ci0JCTU5Qzc3RjJCMTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2NhdGlvblNlcnZpY2VN
b2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUM3
N0YyOTEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU5RTU2MEE3MTEwNTMz
NjYwMEFBMTI1OCAvKiBKYXZhQ2xhc3NKU0MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU5RTU2MEE2MTEwNTMzNjYwMEFBMTI1OCAvKiBKYXZhQ2xhc3NK
U0MuaCAqLzsgfTsKIAkJNTlFNTYwQTkxMTA1MzM2RjAwQUExMjU4IC8qIEphdmFDbGFzc0pTQy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUU1NjBB
ODExMDUzMzZGMDBBQTEyNTggLyogSmF2YUNsYXNzSlNDLmNwcCAqLzsgfTsKIAkJNTlFODQyNjYx
MTA5RTVBMjAwMDMwNUFEIC8qIEpOSUJyaWRnZUpTQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlFODQyNjUxMTA5RTVBMjAwMDMwNUFEIC8qIEpOSUJy
aWRnZUpTQy5oICovOyB9OwpAQCAtNDY4Niw4ICs0Njg0LDYgQEAKIAkJQkNFMUM0NDAwRDk4MzBG
NDAwM0IwMkYyIC8qIEpTTG9jYXRpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFMUM0M0YwRDk4MzBGNDAwM0IwMkYyIC8qIEpTTG9j
YXRpb25DdXN0b20uY3BwICovOyB9OwogCQlCQ0UzQkVDMjBEMjIyQjFEMDA3RTA2RTQgLyogVGFn
Tm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNFM0JFQzAwRDIyMkIxRDAwN0UwNkU0IC8qIFRhZ05vZGVMaXN0LmNwcCAqLzsgfTsKIAkJ
QkNFM0JFQzMwRDIyMkIxRDAwN0UwNkU0IC8qIFRhZ05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0UzQkVDMTBEMjIyQjFEMDA3RTA2RTQg
LyogVGFnTm9kZUxpc3QuaCAqLzsgfTsKLQkJQkNFNDk0QUIwRjRGNUU5RTAwODRFMzE5IC8qIEdl
b2xvY2F0aW9uU2VydmljZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNFNDk0QTkwRjRGNUU5RTAwODRFMzE5IC8qIEdlb2xvY2F0aW9uU2Vydmlj
ZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07Ci0JCUJDRTQ5NEFD
MEY0RjVFOUUwMDg0RTMxOSAvKiBHZW9sb2NhdGlvblNlcnZpY2VNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U0OTRBQTBGNEY1RTlFMDA4NEUz
MTkgLyogR2VvbG9jYXRpb25TZXJ2aWNlTWFjLm1tICovOyB9OwogCQlCQ0U2NThGRjBFQTkyNDhB
MDA3RTQ1MzMgLyogVGhlbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRTY1OEZFMEVBOTI0OEEwMDdFNDUzMyAvKiBUaGVtZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRTY1OUE5MEVBOTI3Qjkw
MDdFNDUzMyAvKiBUaGVtZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0U2NTlBODBFQTkyN0I5MDA3RTQ1MzMgLyogVGhlbWVUeXBlcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRTY1OUU2
MEVBOTJGQjIwMDdFNDUzMyAvKiBUaGVtZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFNjU5RTUwRUE5MkZCMjAwN0U0NTMzIC8qIFRoZW1lTWFj
LmggKi87IH07CkBAIC01MDkzLDggKzUwODksNiBAQAogCQlGRTgwREE2NjBFOUM0NzAzMDAwRDZG
NzUgLyogSlNHZW9wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU4MERBNjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCAq
LzsgfTsKIAkJRkU4MERBNzEwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2RDBF
OUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLzsgfTsKIAkJRkU4MERBNzIw
RTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpT
UG9zaXRpb25FcnJvci5oICovOyB9OwotCQlGRUFCOTAxMjBFQTUxQjlDMDA2MzQ4QzMgLyogR2Vv
bG9jYXRpb25TZXJ2aWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFQUI5MDEwMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNlcnZpY2Uu
Y3BwICovOyB9OwotCQlGRUFCOTAxMzBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2
aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFC
OTAxMTBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUg
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpA
QCAtNjgwNyw4ICs2ODAxLDYgQEAKIAkJNTlCNTk3NzIxMTA4NjU2QjAwNzE1OUU4IC8qIEJyaWRn
ZUpTQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCcmlkZ2VKU0Mu
Y3BwOyBwYXRoID0gYnJpZGdlL2pzYy9CcmlkZ2VKU0MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1OUI1OTc3NDExMDg2NTc5MDA3MTU5RTggLyogQnJpZGdlSlNDLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJyaWRnZUpTQy5oOyBwYXRoID0gYnJpZGdlL2pz
Yy9CcmlkZ2VKU0MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlCQzM5M0UxMTA1
NEExMzAwRkQ4NURCIC8qIEphdmFTdHJpbmdKU0MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSmF2YVN0cmluZ0pTQy5oOyBwYXRoID0ganNjL0phdmFTdHJpbmdKU0MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTlDNzdGMjgxMDU0NUIzQjAwNTA2MTA0IC8qIEdl
b2xvY2F0aW9uU2VydmljZU1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHA7IHBhdGggPSBtb2NrL0dlb2xvY2F0aW9u
U2VydmljZU1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1OUM3N0YyOTEw
NTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmg7IHBhdGggPSBtb2Nr
L0dlb2xvY2F0aW9uU2VydmljZU1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTlFNTYwQTYxMTA1MzM2NjAwQUExMjU4IC8qIEphdmFDbGFzc0pTQy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBKYXZhQ2xhc3NKU0MuaDsgcGF0aCA9IGpzYy9KYXZhQ2xhc3NK
U0MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlFNTYwQTgxMTA1MzM2RjAwQUEx
MjU4IC8qIEphdmFDbGFzc0pTQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBKYXZhQ2xhc3NKU0MuY3BwOyBwYXRoID0ganNjL0phdmFDbGFzc0pTQy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5RTg0MjY1MTEwOUU1QTIwMDAzMDVBRCAvKiBKTklC
cmlkZ2VKU0MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSk5JQnJpZGdlSlND
Lmg7IHBhdGggPSBqc2MvSk5JQnJpZGdlSlNDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMDE5NCw4ICsxMDE4Niw2IEBACiAJCUJDRTFDNDNGMEQ5ODMwRjQwMDNCMDJGMiAvKiBK
U0xvY2F0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTG9jYXRpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Uz
QkVDMDBEMjIyQjFEMDA3RTA2RTQgLyogVGFnTm9kZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGFnTm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0UzQkVDMTBEMjIyQjFEMDA3RTA2RTQgLyogVGFnTm9kZUxpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFnTm9kZUxpc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQkNFNDk0QTkwRjRGNUU5RTAwODRFMzE5IC8qIEdlb2xvY2F0aW9u
U2VydmljZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW9sb2NhdGlv
blNlcnZpY2VNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNFNDk0QUEwRjRG
NUU5RTAwODRFMzE5IC8qIEdlb2xvY2F0aW9uU2VydmljZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdlb2xvY2F0aW9uU2VydmljZU1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFNjU4RkUwRUE5MjQ4QTAwN0U0NTMzIC8qIFRoZW1l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRoZW1lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDRTY1OUE4MEVBOTI3QjkwMDdFNDUzMyAvKiBUaGVtZVR5cGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRoZW1lVHlwZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFNjU5RTUwRUE5MkZCMjAwN0U0NTMzIC8qIFRoZW1l
TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRoZW1lTWFjLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDY3NSw4ICsxMDY2NSw2IEBACiAJCUZFODBEQTZE
MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNQb3NpdGlvbkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVBNDEzM0YxMDVENjdBRTAwMDcyMzZGIC8q
IFdlYkNvcmUuRHJhZ1N1cHBvcnQuZXhwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5leHBvcnRzOyBw
YXRoID0gV2ViQ29yZS5EcmFnU3VwcG9ydC5leHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUZFQUI5MDEwMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvbG9jYXRpb25TZXJ2aWNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkVBQjkwMTEwRUE1MUI5QzAwNjM0OEMz
IC8qIEdlb2xvY2F0aW9uU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHZW9sb2NhdGlvblNlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVG
RDEwMkMxMDVDNDE0NzAwMDI4NTVFIC8qIFdlYkNvcmUuQ29udGV4dE1lbnVzLmV4cCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuZXhwb3J0czsgcGF0aCA9IFdlYkNvcmUuQ29udGV4dE1lbnVzLmV4cDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KIApAQCAtMTE3MzIsOCArMTE3MjAsNiBAQAogCQk1OUM3N0YxMDEwNTQ1OTFDMDA1MDYx
MDQgLyogbW9jayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0J
CQkJNTlDNzdGMjgxMDU0NUIzQjAwNTA2MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2suY3Bw
ICovLAotCQkJCTU5Qzc3RjI5MTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2NhdGlvblNlcnZpY2VN
b2NrLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9IG1vY2s7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtMTE5MTMsOCArMTE4OTksNiBAQAogCQkJCTA2NkM3NzJDMEFCNjAzRDIwMDIzOEND
NCAvKiBGaWxlQ2hvb3Nlck1hYy5tbSAqLywKIAkJCQk1MTRCM0Y3NTBDNzIyMDU1MDAwNTMwREYg
LyogRmlsZVN5c3RlbU1hYy5tbSAqLywKIAkJCQk5MzVDNDc2QzA5QUM0RDYzMDBBNkFBQjQgLyog
Rm91bmRhdGlvbkV4dHJhcy5oICovLAotCQkJCUJDRTQ5NEE5MEY0RjVFOUUwMDg0RTMxOSAvKiBH
ZW9sb2NhdGlvblNlcnZpY2VNYWMuaCAqLywKLQkJCQlCQ0U0OTRBQTBGNEY1RTlFMDA4NEUzMTkg
LyogR2VvbG9jYXRpb25TZXJ2aWNlTWFjLm1tICovLAogCQkJCTkzNUM0NzZFMDlBQzRENzMwMEE2
QUFCNCAvKiBLZXlFdmVudE1hYy5tbSAqLywKIAkJCQk2NTkzOTIzOTA5QUU0MzVDMDAyQzUzMUYg
LyogS1VSTE1hYy5tbSAqLywKIAkJCQk5MzUyMDg0NDA5QkQ0M0I5MDBGMjAzOEQgLyogTGFuZ3Vh
Z2UubW0gKi8sCkBAIC0xNTg0NCw4ICsxNTgyOCw2IEBACiAJCQkJMDY2Qzc3MkEwQUI2MDNCNzAw
MjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmggKi8sCiAJCQkJNTE0QjNGNzIwQzcyMjA0NzAwMDUzMERG
IC8qIEZpbGVTeXN0ZW0uaCAqLywKIAkJCQlCQzA3M0JBOTBDMzk5QjFGMDAwRjU5NzkgLyogRmxv
YXRDb252ZXJzaW9uLmggKi8sCi0JCQkJRkVBQjkwMTAwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xv
Y2F0aW9uU2VydmljZS5jcHAgKi8sCi0JCQkJRkVBQjkwMTEwRUE1MUI5QzAwNjM0OEMzIC8qIEdl
b2xvY2F0aW9uU2VydmljZS5oICovLAogCQkJCUJDM0JDMjlCMEU5MUFCMEYwMDgzNTU4OCAvKiBI
b3N0V2luZG93LmggKi8sCiAJCQkJNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuY3Bw
ICovLAogCQkJCTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmggKi8sCkBAIC0xNzg5
Myw5ICsxNzg3NSw2IEBACiAJCQkJQkM1NkNCMjQxMEQ1QUM4MDAwQTc3QzY0IC8qIEdlb2xvY2F0
aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTZDQjI1MTBENUFDODAwMEE3N0M2NCAv
KiBHZW9sb2NhdGlvblBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OTYyMjk3QTExMzNF
RkUyMDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLywK
LQkJCQlGRUFCOTAxMzBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggaW4g
SGVhZGVycyAqLywKLQkJCQlCQ0U0OTRBQjBGNEY1RTlFMDA4NEUzMTkgLyogR2VvbG9jYXRpb25T
ZXJ2aWNlTWFjLmggaW4gSGVhZGVycyAqLywKLQkJCQk1OUM3N0YyQjEwNTQ1QjNCMDA1MDYxMDQg
LyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU4MEQ3Qzkw
RTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMz
REE2QzBEMDA2Q0Q2MDBFRjZGMjYgLyogR2x5cGhCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUM1RDRBQTdBMTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjAyMTIsOSArMjAxOTEsNiBAQAogCQkJCUZFODBEN0M1MEU5QzFGMjUwMDBENkY3
NSAvKiBHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzU2Q0IyMTEwRDVBQzgw
MDBBNzdDNjQgLyogR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTU5NjIyOTc4MTEzM0VGRDcwMERDNENCQiAvKiBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJRkVBQjkwMTIwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0
aW9uU2VydmljZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCQ0U0OTRBQzBGNEY1RTlFMDA4NEUz
MTkgLyogR2VvbG9jYXRpb25TZXJ2aWNlTWFjLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTlDNzdG
MkExMDU0NUIzQjAwNTA2MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjJDM0RBNkQwRDAwNkNENjAwRUY2RjI2IC8qIEdseXBoUGFnZVRyZWVOb2Rl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQUZGQzgzMEQwMEE1QzEwMDMwMDc0RCAvKiBHbHlw
aFBhZ2VUcmVlTm9kZU1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzUzQzYwODBEQTU2QzU3
MDAyMUVCNUQgLyogR3JhZGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDYwMzExKQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsMTIgKzMxLDE1IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCi0jaW5jbHVkZSAiR2Vv
bG9jYXRpb25TZXJ2aWNlLmgiCiAjaW5jbHVkZSAiSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmgi
CiAjaW5jbHVkZSAiSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJK
U0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIlBvc2l0aW9uT3B0aW9ucy5oIgotI2luY2x1ZGUgPHJ1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5o
PgorCisjaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisjaW5jbHVkZSAiR2Vv
bG9jYXRpb25TZXJ2aWNlLmgiCisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5n
IG5hbWVzcGFjZSBzdGQ7CkBAIC00Niw3ICs0OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0
YXRpYyBQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IGNyZWF0ZVBvc2l0aW9uQ2FsbGJhY2so
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQogewogICAgIC8vIFRoZSBzcGVjIHNwZWNpZmllcyAnRnVuY3Rpb25Pbmx5JyBmb3Ig
dGhpcyBvYmplY3QuCi0gICAgaWYgKCF2YWx1ZS5pbmhlcml0cygmSW50ZXJuYWxGdW5jdGlvbjo6
aW5mbykpIHsKKyAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBkaXNhbGxvd3MgY2FsbGFibGUgb2Jq
ZWN0cyBjcmVhdGVkIHZpYSBKU0MgQVBJLiBJdCdzIG5vdCBjbGVhciB3aGF0IGV4YWN0bHkgdGhl
IHNwZWNpZmljYXRpb24gaW50ZW5kcyB0byBhbGxvdy4KKyAgICBpZiAoIXZhbHVlLmluaGVyaXRz
KCZKU0Z1bmN0aW9uOjppbmZvKSkgewogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQ
RV9NSVNNQVRDSF9FUlIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC02Miw3ICs2Niw4
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4KICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICAvLyBUaGUgc3BlYyBzcGVjaWZpZXMgJ0Z1bmN0aW9uT25seScgZm9yIHRo
aXMgb2JqZWN0LgotICAgIGlmICghdmFsdWUuaW5oZXJpdHMoJkludGVybmFsRnVuY3Rpb246Omlu
Zm8pKSB7CisgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgZGlzYWxsb3dzIGNhbGxhYmxlIG9iamVj
dHMgY3JlYXRlZCB2aWEgSlNDIEFQSS4gSXQncyBub3QgY2xlYXIgd2hhdCBleGFjdGx5IHRoZSBz
cGVjaWZpY2F0aW9uIGludGVuZHMgdG8gYWxsb3cuCisgICAgaWYgKCF2YWx1ZS5pbmhlcml0cygm
SlNGdW5jdGlvbjo6aW5mbykpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVf
TUlTTUFUQ0hfRVJSKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpJbmRleDogV2ViQ29yZS9w
YWdlL0dlb2xvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9u
LmgJKHJldmlzaW9uIDYwMzExKQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNkZWZpbmUgR2VvbG9jYXRpb25faAogCiAjaW5j
bHVkZSAiR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmgiCi0jaW5jbHVkZSAiR2VvbG9jYXRpb25T
ZXJ2aWNlLmgiCiAjaW5jbHVkZSAiR2VvcG9zaXRpb24uaCIKICNpbmNsdWRlICJQb3NpdGlvbkNh
bGxiYWNrLmgiCiAjaW5jbHVkZSAiUG9zaXRpb25FcnJvci5oIgpAQCAtMzYsNiArMzUsMTAgQEAK
ICNpbmNsdWRlICJQb3NpdGlvbk9wdGlvbnMuaCIKICNpbmNsdWRlICJUaW1lci5oIgogCisjaWYg
IUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCisjaW5jbHVkZSAiR2VvbG9jYXRpb25T
ZXJ2aWNlLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsK
SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gNjAzNzYpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTAtMDUtMjggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDM0CisgICAgICAgIFJFR1JF
U1NJT04gKHI1OTgxMSk6IEdlb2xvY2F0aW9uIGNhbGxiYWNrcyBjYW5ub3QgYmUgY3JlYXRlZAor
CisgICAgICAgIFJlbW92aW5nIHVudXNlZCBXZWJHZW9sb2NhdGlvbk1vY2suCisKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMC0wNS0yOCAgTHVjYXMg
RGUgTWFyY2hpICA8bHVjYXMuZGVtYXJjaGlAcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2MDMxMSkKKysrIFdlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTEwLDggKzEx
MCw2IEBACiAJCTUxRkRDNEQzMEIwQUY1QzEwMEY4NEVCMyAvKiBXZWJIaXN0b3J5SXRlbVByaXZh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkRD
NEQyMEIwQUY1QzEwMEY4NEVCMyAvKiBXZWJIaXN0b3J5SXRlbVByaXZhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MjQxQURGNTBCMUJDNDhB
MDA0MDEyQkQgLyogV2ViQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyNDFBREYzMEIxQkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyNDFBREY2MEIx
QkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyNDFBREY0MEIxQkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5t
bSAqLzsgfTsKLQkJNTlDNzdGMzUxMDU0NUY3RTAwNTA2MTA0IC8qIFdlYkdlb2xvY2F0aW9uTW9j
ay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5Qzc3
RjMzMTA1NDVGN0UwMDUwNjEwNCAvKiBXZWJHZW9sb2NhdGlvbk1vY2subW0gKi87IH07Ci0JCTU5
Qzc3RjRCMTA1NDcxRTcwMDUwNjEwNCAvKiBXZWJHZW9sb2NhdGlvbk1vY2tQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OUM3N0Y0QTEwNTQ3
MUU3MDA1MDYxMDQgLyogV2ViR2VvbG9jYXRpb25Nb2NrUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVEN0JGODE0MEMyQTFEOTAwMDhD
RTA2RCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVEN0JGODEyMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1RDdCRjgx
NTBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ3QkY4MTMwQzJBMUQ5MDAwOENFMDZEIC8qIFdl
Ykluc3BlY3Rvci5tbSAqLzsgfTsKIAkJNURFODNBN0EwRDBGN0Y5NDAwQ0FEMTJBIC8qIFdlYkph
dmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5uaWIgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVERTgzQTc0MEQwRjdGOTQwMENBRDEyQSAvKiBXZWJKYXZhU2Ny
aXB0VGV4dElucHV0UGFuZWwubmliICovOyB9OwpAQCAtNTEwLDggKzUwOCw2IEBACiAJCTUxRkRD
NEQyMEIwQUY1QzEwMEY4NEVCMyAvKiBXZWJIaXN0b3J5SXRlbVByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSGlzdG9yeUl0ZW1Qcml2YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNDFBREYzMEIxQkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNo
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ2FjaGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI0MUFERjQwQjFCQzQ4QTAwNDAxMkJEIC8qIFdlYkNh
Y2hlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNhY2hl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1OUM3N0YzMzEwNTQ1RjdFMDA1MDYx
MDQgLyogV2ViR2VvbG9jYXRpb25Nb2NrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViR2VvbG9jYXRpb25Nb2NrLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk1OUM3N0Y0QTEwNTQ3MUU3MDA1MDYxMDQgLyogV2ViR2VvbG9jYXRpb25Nb2NrUHJp
dmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHZW9sb2NhdGlvbk1v
Y2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEN0JGODEyMEMyQTFE
OTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdC
RjgxMzBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3Rvci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNURFODNBNzUwRDBGN0Y5NDAwQ0FEMTJBIC8qIEVuZ2xpc2ggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLm5pYjsg
bmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9qL1dlYkphdmFTY3JpcHRUZXh0SW5w
dXRQYW5lbC5uaWI7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKQEAgLTEyMzQsOCArMTIz
MCw2IEBACiAJCQkJOTMxNjMzRUUwQUVERkZBRTAwNjJCOTJEIC8qIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tICovLAogCQkJCUJDN0Y4ODQ5MTBDODc3NUEwMEQ2MTMzRCAvKiBXZWJHZW9sb2NhdGlv
bkNvbnRyb2xsZXJDbGllbnQuaCAqLywKIAkJCQlCQzdGODg0QTEwQzg3NzVBMDBENjEzM0QgLyog
V2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50Lm1tICovLAotCQkJCTU5Qzc3RjMzMTA1NDVG
N0UwMDUwNjEwNCAvKiBXZWJHZW9sb2NhdGlvbk1vY2subW0gKi8sCi0JCQkJNTlDNzdGNEExMDU0
NzFFNzAwNTA2MTA0IC8qIFdlYkdlb2xvY2F0aW9uTW9ja1ByaXZhdGUuaCAqLywKIAkJCQk1MTQ5
NENENDBDN0VCREUwMDA0MTc4QzUgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggKi8sCiAJCQkJ
NTE0OTRDRDUwQzdFQkRFMDAwNDE3OEM1IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5tbSAqLywK
IAkJCQk5Q0UxRjhBMzAyQTVDNkYzMEVDQTJBQ0QgLyogV2ViSW1hZ2VSZW5kZXJlckZhY3Rvcnku
bSAqLywKQEAgLTE0MTQsNyArMTQwOCw2IEBACiAJCQkJOTM5ODEwNkYwODI0QkYwMTAwOERGMDM4
IC8qIFdlYkZyYW1lVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTBBRjA4
MjRCRjAxMDA4REYwMzggLyogV2ViRnJhbWVWaWV3UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM3Rjg4NEIxMEM4Nzc1QTAwRDYxMzNEIC8qIFdlYkdlb2xvY2F0aW9uQ29udHJvbGxlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTlDNzdGNEIxMDU0NzFFNzAwNTA2MTA0IC8qIFdl
Ykdlb2xvY2F0aW9uTW9ja1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0Y4ODlFMTBD
OUQzMEMwMEQ2MTMzRCAvKiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzdGODhBNTEwQzlEODhCMDBENjEzM0QgLyogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbklu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTAxMjA4MjRCRjAxMDA4REYwMzggLyog
V2ViSGlzdG9yeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xODEzLDcgKzE4MDYsNiBAQAogCQkJCTkz
MTYzM0VGMEFFREZGQUUwMDYyQjkyRCAvKiBXZWJGcmFtZUxvYWRlckNsaWVudC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzOTgxMTA2MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJGcmFtZVZpZXcubW0g
aW4gU291cmNlcyAqLywKIAkJCQlCQzdGODg0QzEwQzg3NzVBMDBENjEzM0QgLyogV2ViR2VvbG9j
YXRpb25Db250cm9sbGVyQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNTlDNzdGMzUxMDU0
NUY3RTAwNTA2MTA0IC8qIFdlYkdlb2xvY2F0aW9uTW9jay5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUJDN0Y4ODlGMTBDOUQzMEMwMEQ2MTMzRCAvKiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTM5ODExMTMwODI0QkYwMTAwOERGMDM4IC8qIFdlYkhpc3Rvcnku
bW0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBCRDA4MjRCRjAxMDA4REYwMzggLyogV2ViSGlz
dG9yeUl0ZW0ubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MDM3NikKKysrIFdl
YktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAt
MDUtMjggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM5NDM0CisgICAgICAgIFJFR1JFU1NJT04gKHI1OTgxMSk6IEdl
b2xvY2F0aW9uIGNhbGxiYWNrcyBjYW5ub3QgYmUgY3JlYXRlZAorCisgICAgICAgIFJlbW92aW5n
IHVudXNlZCBXZWJHZW9sb2NhdGlvbk1vY2suCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbk1vY2subW06IFJlbW92ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25Nb2NrUHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYktpdC5l
eHA6CisKIDIwMTAtMDUtMjcgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IFdlYktpdC9tYWMvV2ViS2l0LmV4
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYktpdC5leHAJKHJldmlzaW9uIDYwMzExKQor
KysgV2ViS2l0L21hYy9XZWJLaXQuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw2IEBA
CiAub2JqY19jbGFzc19uYW1lX1dlYkZvcm1EZWxlZ2F0ZQogLm9iamNfY2xhc3NfbmFtZV9XZWJG
cmFtZQogLm9iamNfY2xhc3NfbmFtZV9XZWJGcmFtZVZpZXcKLS5vYmpjX2NsYXNzX25hbWVfV2Vi
R2VvbG9jYXRpb25Nb2NrCiAub2JqY19jbGFzc19uYW1lX1dlYkdlb2xvY2F0aW9uUG9zaXRpb24K
IC5vYmpjX2NsYXNzX25hbWVfV2ViSFRNTFJlcHJlc2VudGF0aW9uCiAub2JqY19jbGFzc19uYW1l
X1dlYkhUTUxWaWV3CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0
aW9uTW9jay5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uTW9jay5tbQkocmV2aXNpb24gNjAzMTEpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkdlb2xvY2F0aW9uTW9jay5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw2MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBv
cnQgIldlYkdlb2xvY2F0aW9uTW9ja1ByaXZhdGUuaCIKLQotI2ltcG9ydCA8V2ViQ29yZS9HZW9s
b2NhdGlvblNlcnZpY2VNb2NrLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0dlb3Bvc2l0aW9uLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL1Bvc2l0aW9uRXJyb3IuaD4KLSNpbXBvcnQgPHd0Zi9DdXJyZW50VGlt
ZS5oPgotCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIFdURjsK
LQotQGltcGxlbWVudGF0aW9uIFdlYkdlb2xvY2F0aW9uTW9jawotCi0rICh2b2lkKXNldFBvc2l0
aW9uOihkb3VibGUpbGF0aXR1ZGU6KGRvdWJsZSlsb25naXR1ZGU6KGRvdWJsZSlhY2N1cmFjeQot
ewotI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBSZWZQdHI8Q29vcmRpbmF0ZXM+IGNvb3Jk
aW5hdGVzID0gQ29vcmRpbmF0ZXM6OmNyZWF0ZShsYXRpdHVkZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25naXR1ZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFs
c2UsIDAuMCwgIC8vIGFsdGl0dWRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWNjdXJhY3ksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIDAuMCwgIC8vIGFsdGl0
dWRlQWNjdXJhY3kKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmYWxzZSwgMC4wLCAgLy8gaGVhZGluZwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCAwLjApOyAgLy8g
c3BlZWQKLSAgICBSZWZQdHI8R2VvcG9zaXRpb24+IHBvc2l0aW9uID0gR2VvcG9zaXRpb246OmNy
ZWF0ZShjb29yZGluYXRlcy5yZWxlYXNlKCksIGN1cnJlbnRUaW1lKCkgKiAxMDAwLjApOwotICAg
IEdlb2xvY2F0aW9uU2VydmljZU1vY2s6OnNldFBvc2l0aW9uKHBvc2l0aW9uLnJlbGVhc2UoKSk7
Ci0jZW5kaWYKLX0KLQotKyAodm9pZClzZXRFcnJvcjooaW50KWNvZGU6KE5TU3RyaW5nICopbWVz
c2FnZQotewotI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBQb3NpdGlvbkVycm9yOjpFcnJv
ckNvZGUgY29kZUVudW0gPSBzdGF0aWNfY2FzdDxQb3NpdGlvbkVycm9yOjpFcnJvckNvZGU+KGNv
ZGUpOwotICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IFBvc2l0aW9uRXJyb3I6OmNy
ZWF0ZShjb2RlRW51bSwgbWVzc2FnZSk7Ci0gICAgR2VvbG9jYXRpb25TZXJ2aWNlTW9jazo6c2V0
RXJyb3IoZXJyb3IucmVsZWFzZSgpKTsKLSNlbmRpZgotfQotCi1AZW5kCkluZGV4OiBXZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uTW9ja1ByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uTW9ja1ByaXZhdGUu
aAkocmV2aXNpb24gNjAzMTEpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uTW9ja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzMyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5oPgotCi1AaW50ZXJmYWNlIFdlYkdlb2xvY2F0aW9uTW9jayA6IE5T
T2JqZWN0IHsKLX0KLQotKyAodm9pZClzZXRQb3NpdGlvbjooZG91YmxlKWxhdGl0dWRlOihkb3Vi
bGUpbG9uZ2l0dWRlOihkb3VibGUpYWNjdXJhY3k7Ci0rICh2b2lkKXNldEVycm9yOihpbnQpY29k
ZTooTlNTdHJpbmcgKiltZXNzYWdlOwotQGVuZApJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNjAzNzYpCisr
KyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOCBAQAor
MjAxMC0wNS0yOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0MzQKKyAgICAgICAgUkVHUkVTU0lPTiAocjU5ODEx
KTogR2VvbG9jYXRpb24gY2FsbGJhY2tzIGNhbm5vdCBiZSBjcmVhdGVkCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBB
ZGRlZCBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdBbmRPZmZzY3Jl
ZW5XaW5kb3cpOiBUZWxsIHRoZSB2aWV3IHRvIHVzZSBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci4g
CisgICAgICAgIChyZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcpOiBN
YWtlIHN1cmUgdGhhdCBtb2NrIG5vdGlmaWNhdGlvbnMgZG9uJ3QgbGVhaworICAgICAgICBpbnRv
IHN1YnNlcXVlbnQgdGVzdHMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOiBDaGFuZ2VkIHRvIHVzZSBNb2NrR2VvbG9jYXRpb25Q
cm92aWRlci4KKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRp
b25FcnJvcik6IERpdHRvLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9s
b2NhdGlvblByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9N
b2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbTogQWRkZWQuCisgICAgICAgICgrW01vY2tHZW9sb2Nh
dGlvblByb3ZpZGVyIHNoYXJlZF0pOgorICAgICAgICAoLVtNb2NrR2VvbG9jYXRpb25Qcm92aWRl
ciBkZWFsbG9jXSk6CisgICAgICAgICgtW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNldFBvc2l0
aW9uOl0pOgorICAgICAgICAoLVtNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzZXRFcnJvcjpdKToK
KyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgcmVnaXN0ZXJXZWJWaWV3Ol0pOgor
ICAgICAgICAoLVtNb2NrR2VvbG9jYXRpb25Qcm92aWRlciB1bnJlZ2lzdGVyV2ViVmlldzpdKToK
KyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgbGFzdFBvc2l0aW9uXSk6CisgICAg
ICAgICgtW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHN0b3BUaW1lcl0pOgorICAgICAgICAoLVtN
b2NrR2VvbG9jYXRpb25Qcm92aWRlciB0aW1lckZpcmVkXSk6CisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSB3ZWJWaWV3
OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46ZnJhbWU6bGlzdGVu
ZXI6XSk6CisgICAgICAgIFRoaXMgZGVsZWdhdGUgbWV0aG9kIG11c3Qgc2VuZCBhIHJlc3BvbnNl
LiBJJ20gbm90IHN1cmUgd2hhdCB0aGUgdHdvLXN0YWdlIGNoZWNrIGlzIHN1cHBvc2VkCisgICAg
ICAgIHRvIGFjaGlldmUsIGl0IHNlZW1zIHVubmVjZXNzYXJ5LgorCiAyMDEwLTA1LTI4ICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QmV0aCBEYWtpbi4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gNjAzMTEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiAr
MTE3LDggQEAKIAkJQkNEMDhCM0EwRTEwNTdFRjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRDA4QjM5MEUxMDU3RUYwMEE3RDBDMSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAg
Ki87IH07CiAJCUJDRDA4QjcxMEUxMDU5RDIwMEE3RDBDMSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRDA4QjcwMEUxMDU5RDIwMEE3RDBDMSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5t
bSAqLzsgfTsKIAkJQkNGNkM2NTAwQzk4RTlDMDAwQUMwNjNFIC8qIEdDQ29udHJvbGxlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2QzY0RjBD
OThFOUMwMDBBQzA2M0UgLyogR0NDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJRTFCNzgxNjUxMUFG
MzFCNzAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFCNzgwODcxMUFGMTY2OTAwN0UxQkMy
IC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1tICovOyB9OworCQlFMUI3ODE2NzExQUYzMUMz
MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQjc4MDg1MTFBRjE2NDMwMDdFMUJDMiAvKiBN
b2NrR2VvbG9jYXRpb25Qcm92aWRlci5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0y
NzUsNiArMjc3LDggQEAKIAkJQkNEMDhCMzkwRTEwNTdFRjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkNEMDhCNzAwRTEwNTlEMjAwQTdEMEMxIC8qIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJNYWMubW07IHBhdGggPSBtYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRjZDNjRGMEM5OEU5QzAwMEFDMDYzRSAv
KiBHQ0NvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGZpbGVFbmNvZGluZyA9IDMwOyBwYXRo
ID0gR0NDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTFCNzgw
ODUxMUFGMTY0MzAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmg7IHBhdGgg
PSBtYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTFCNzgwODcxMUFGMTY2OTAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVy
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTW9ja0dlb2xvY2F0
aW9uUHJvdmlkZXIubW07IHBhdGggPSBtYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTM3
OCw2ICszODIsOCBAQAogCQkJCUJDMDEzMUQ4MEM5NzcyMDEwMDg3MzE3RCAvKiBMYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJQkMwMTMxRDkwQzk3NzIwMTAwODczMTdEIC8qIExheW91
dFRlc3RDb250cm9sbGVyLmggKi8sCiAJCQkJQkNBMThCMjIwQzlCMDE0QjAwMTE0MzY5IC8qIExh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tICovLAorCQkJCUUxQjc4MDg1MTFBRjE2NDMwMDdFMUJD
MiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oICovLAorCQkJCUUxQjc4MDg3MTFBRjE2Njkw
MDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbSAqLywKIAkJCQlCQ0ExOEI2RDBD
OUIwOERCMDAxMTQzNjkgLyogTmF2aWdhdGlvbkNvbnRyb2xsZXIuaCAqLywKIAkJCQlCQ0ExOEI2
RTBDOUIwOERCMDAxMTQzNjkgLyogTmF2aWdhdGlvbkNvbnRyb2xsZXIubSAqLywKIAkJCQlCQ0Ex
OEIyRjBDOUIwMUI0MDAxMTQzNjkgLyogT2JqQ0NvbnRyb2xsZXIuaCAqLywKQEAgLTU0Niw2ICs1
NTIsNyBAQAogCQkJCUJDOUQ5MDI1MEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDOUQ5MDI2MEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWVJdGVt
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTg1RjZCMzEwNzE0RTEyMDA3QUEzOTMgLyogSGlzdG9y
eURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMUI3ODE2NzExQUYzMUMzMDA3RTFCQzIg
LyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNzEyLDYgKzcx
OSw3IEBACiAJCQkJQkM5RDkwMjQwQzk3NDcyRTAwOTlBNEEzIC8qIFdvcmtRdWV1ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0ExOEIyNjBDOUIwMTVDMDAxMTQzNjkgLyogV29ya1F1ZXVlSXRl
bU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxODVGNkIyMTA3MTRFMDcwMDdBQTM5MyAvKiBI
aXN0b3J5RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKKwkJCQlFMUI3ODE2NTExQUYzMUI3MDA3
RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0J
KHJldmlzaW9uIDYwMzExKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0ICJI
aXN0b3J5RGVsZWdhdGUuaCIKICNpbXBvcnQgIkphdmFTY3JpcHRUaHJlYWRpbmcuaCIKICNpbXBv
cnQgIkxheW91dFRlc3RDb250cm9sbGVyLmgiCisjaW1wb3J0ICJNb2NrR2VvbG9jYXRpb25Qcm92
aWRlci5oIgogI2ltcG9ydCAiTmF2aWdhdGlvbkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIk9iakNQ
bHVnaW4uaCIKICNpbXBvcnQgIk9iakNQbHVnaW5GdW5jdGlvbi5oIgpAQCAtMjkxLDYgKzI5Miw3
IEBAIFdlYlZpZXcgKmNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cKICAgICBbd2ViVmll
dyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpmcmFtZUxvYWREZWxlZ2F0ZV07CiAgICAgW3dlYlZpZXcg
c2V0RWRpdGluZ0RlbGVnYXRlOmVkaXRpbmdEZWxlZ2F0ZV07CiAgICAgW3dlYlZpZXcgc2V0UmVz
b3VyY2VMb2FkRGVsZWdhdGU6cmVzb3VyY2VMb2FkRGVsZWdhdGVdOworICAgIFt3ZWJWaWV3IF9z
ZXRHZW9sb2NhdGlvblByb3ZpZGVyOltNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRdXTsK
IAogICAgIC8vIFJlZ2lzdGVyIHRoZSBzYW1lIHNjaGVtZXMgdGhhdCBTYWZhcmkgZG9lcwogICAg
IFtXZWJWaWV3IHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbDpAImZlZWQiXTsKQEAgLTExODEsNiAr
MTE4Myw4IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKIAogICAg
IFtXZWJWaWV3IF9zZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvcjpZRVNdOwogICAgIFtXZWJW
aWV3IF9yZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHNdOworCisgICAgW1tNb2NrR2VvbG9jYXRp
b25Qcm92aWRlciBzaGFyZWRdIHN0b3BUaW1lcl07CiB9CiAKIHN0YXRpYyB2b2lkIHJ1blRlc3Qo
Y29uc3Qgc3RyaW5nJiB0ZXN0UGF0aE9yVVJMKQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2
aXNpb24gNjAzMTEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBv
cnQgIkxheW91dFRlc3RDb250cm9sbGVyLmgiCiAKICNpbXBvcnQgIkVkaXRpbmdEZWxlZ2F0ZS5o
IgorI2ltcG9ydCAiTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBvcnQgIlBvbGljeURl
bGVnYXRlLmgiCiAjaW1wb3J0ICJXb3JrUXVldWUuaCIKICNpbXBvcnQgIldvcmtRdWV1ZUl0ZW0u
aCIKQEAgLTQ3LDcgKzQ4LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJEYXRhYmFzZU1hbmFnZXJQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWUuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJGcmFtZVZpZXdQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViR2VvbG9jYXRpb25Nb2Nr
UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaD4KICNp
bXBvcnQgPFdlYktpdC9XZWJIVE1MUmVwcmVzZW50YXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJIVE1MVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJIaXN0b3J5Lmg+CkBAIC01
NSw2ICs1Niw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViSWNvbkRhdGFiYXNlUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dlYkluc3BlY3RvclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJOU1VSTEV4dHJhcy5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdEVycm9ycy5oPgogI2ltcG9y
dCA8V2ViS2l0L1dlYlByZWZlcmVuY2VzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViUHJlZmVyZW5j
ZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViU2NyaXB0V29ybGQuaD4KQEAgLTI5OCwx
NCArMzAwLDE3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldERvbWFpblJlbGEKIAog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91
YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpCiB7Ci0gICAg
W1dlYkdlb2xvY2F0aW9uTW9jayBzZXRQb3NpdGlvbjpsYXRpdHVkZTpsb25naXR1ZGU6YWNjdXJh
Y3ldOworICAgIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uID0gW1tXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uIGFsbG9jXSBpbml0V2l0aFRpbWVzdGFtcDowIGxhdGl0dWRlOmxhdGl0dWRl
IGxvbmdpdHVkZTpsb25naXR1ZGUgYWNjdXJhY3k6YWNjdXJhY3ldOworICAgIFtbTW9ja0dlb2xv
Y2F0aW9uUHJvdmlkZXIgc2hhcmVkXSBzZXRQb3NpdGlvbjpwb3NpdGlvbl07CisgICAgW3Bvc2l0
aW9uIHJlbGVhc2VdOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2Vv
bG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSkKIHsKICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IG1lc3NhZ2VDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmlu
ZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtZXNzYWdlKSk7CiAgICAgTlNTdHJpbmcgKm1lc3NhZ2VO
UyA9IChOU1N0cmluZyAqKW1lc3NhZ2VDRi5nZXQoKTsKLSAgICBbV2ViR2VvbG9jYXRpb25Nb2Nr
IHNldEVycm9yOmNvZGU6bWVzc2FnZU5TXTsKKyAgICBOU0Vycm9yICplcnJvciA9IFtOU0Vycm9y
IGVycm9yV2l0aERvbWFpbjpXZWJLaXRFcnJvckRvbWFpbiBjb2RlOmNvZGUgdXNlckluZm86W05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptZXNzYWdlTlMgZm9yS2V5Ok5TTG9jYWxp
emVkRGVzY3JpcHRpb25LZXldXTsKKyAgICBbW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJl
ZF0gc2V0RXJyb3I6ZXJyb3JdOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRJ
Y29uRGF0YWJhc2VFbmFibGVkKGJvb2wgaWNvbkRhdGFiYXNlRW5hYmxlZCkKSW5kZXg6IFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Q
cm92aWRlci5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBN
b2NrR2VvbG9jYXRpb25Qcm92aWRlcl9oCisjZGVmaW5lIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVy
X2gKKworI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvSGFz
aFNldC5oPgorCitAaW50ZXJmYWNlIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyIDogTlNPYmplY3Q8
V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4geworICAgIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKl9s
YXN0UG9zaXRpb247CisgICAgTlNFcnJvciAqX2Vycm9yOworICAgIE5TVGltZXIgKl90aW1lcjsK
KyAgICBIYXNoU2V0PFdlYlZpZXcgKj4gX3JlZ2lzdGVyZWRWaWV3czsKK30KKworKyAoTW9ja0dl
b2xvY2F0aW9uUHJvdmlkZXIgKilzaGFyZWQ7CisKKy0gKHZvaWQpc2V0UG9zaXRpb246KFdlYkdl
b2xvY2F0aW9uUG9zaXRpb24gKilwb3NpdGlvbjsKKy0gKHZvaWQpc2V0RXJyb3I6KE5TRXJyb3Ig
KillcnJvcjsKKworLSAodm9pZClzdG9wVGltZXI7CisKK0BlbmQKKyNlbmRpZgpJbmRleDogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRp
b25Qcm92aWRlci5tbQkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lt
cG9ydCAiTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaCIKKworCitAaW1wbGVtZW50YXRpb24gTW9j
a0dlb2xvY2F0aW9uUHJvdmlkZXIKKworKyAoTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgKilzaGFy
ZWQKK3sKKyAgICBzdGF0aWMgTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgKnByb3ZpZGVyID0gW1tN
b2NrR2VvbG9jYXRpb25Qcm92aWRlciBhbGxvY10gaW5pdF07CisgICAgcmV0dXJuIHByb3ZpZGVy
OworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBBU1NFUlQoX3JlZ2lzdGVyZWRWaWV3cy5p
c0VtcHR5KCkpOworCisgICAgW19sYXN0UG9zaXRpb24gcmVsZWFzZV07CisgICAgW19lcnJvciBy
ZWxlYXNlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpc2V0UG9zaXRpb246
KFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKilwb3NpdGlvbgoreworICAgIGlmIChfbGFzdFBvc2l0
aW9uICE9IHBvc2l0aW9uKSB7CisgICAgICAgIFtfbGFzdFBvc2l0aW9uIHJlbGVhc2VdOworICAg
ICAgICBfbGFzdFBvc2l0aW9uID0gW3Bvc2l0aW9uIHJldGFpbl07CisgICAgfQorICAgIAorICAg
IFtfZXJyb3IgcmVsZWFzZV07CisgICAgX2Vycm9yID0gMDsKKworICAgIGlmICghX3RpbWVyKQor
ICAgICAgICBfdGltZXIgPSBbTlNUaW1lciBzY2hlZHVsZWRUaW1lcldpdGhUaW1lSW50ZXJ2YWw6
MCB0YXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IodGltZXJGaXJlZCkgdXNlckluZm86MCBy
ZXBlYXRzOk5PXTsKK30KKworLSAodm9pZClzZXRFcnJvcjooTlNFcnJvciAqKWVycm9yCit7Cisg
ICAgaWYgKF9lcnJvciAhPSBlcnJvcikgeworICAgICAgICBbX2Vycm9yIHJlbGVhc2VdOworICAg
ICAgICBfZXJyb3IgPSBbZXJyb3IgcmV0YWluXTsKKyAgICB9CisgICAgCisgICAgW19sYXN0UG9z
aXRpb24gcmVsZWFzZV07CisgICAgX2xhc3RQb3NpdGlvbiA9IDA7CisKKyAgICBpZiAoIV90aW1l
cikKKyAgICAgICAgX3RpbWVyID0gW05TVGltZXIgc2NoZWR1bGVkVGltZXJXaXRoVGltZUludGVy
dmFsOjAgdGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHRpbWVyRmlyZWQpIHVzZXJJbmZv
OjAgcmVwZWF0czpOT107Cit9CisKKy0gKHZvaWQpcmVnaXN0ZXJXZWJWaWV3OihXZWJWaWV3ICop
d2ViVmlldworeworICAgIF9yZWdpc3RlcmVkVmlld3MuYWRkKHdlYlZpZXcpOworfQorCistICh2
b2lkKXVucmVnaXN0ZXJXZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldworeworICAgIF9yZWdpc3Rl
cmVkVmlld3MucmVtb3ZlKHdlYlZpZXcpOworfQorCistIChXZWJHZW9sb2NhdGlvblBvc2l0aW9u
ICopbGFzdFBvc2l0aW9uCit7CisgICAgcmV0dXJuIF9sYXN0UG9zaXRpb247Cit9CisKKy0gKHZv
aWQpc3RvcFRpbWVyCit7CisgICAgW190aW1lciBpbnZhbGlkYXRlXTsKKyAgICBfdGltZXIgPSAw
OworfQorCistICh2b2lkKXRpbWVyRmlyZWQKK3sKKyAgICBfdGltZXIgPSAwOworCisgICAgLy8g
RXhwZWN0IHRoYXQgdmlld3Mgd29uJ3QgYmUgKHVuKXJlZ2lzdGVyZWQgd2hpbGUgaXRlcmF0aW5n
LgorICAgIEhhc2hTZXQ8V2ViVmlldyo+IHZpZXdzID0gX3JlZ2lzdGVyZWRWaWV3czsKKyAgICBm
b3IgKEhhc2hTZXQ8V2ViVmlldyo+OjppdGVyYXRvciBpdGVyID0gdmlld3MuYmVnaW4oKTsgaXRl
ciAhPSB2aWV3cy5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIGlmIChfZXJyb3IpCisgICAgICAg
ICAgICBbKml0ZXIgX2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhFcnJvcjpfZXJyb3JdOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBbKml0ZXIgX2dlb2xvY2F0aW9uRGlkQ2hhbmdlUG9zaXRpb246
X2xhc3RQb3NpdGlvbl07CisgICAgfQorfQorCitAZW5kCkluZGV4OiBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gNjAzMTEpCisrKyBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTU3LDEyICsxNTcsMTEgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHNl
dFN0YQogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZv
ckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2lu
IGZyYW1lOihXZWJGcmFtZSAqKWZyYW1lIGxpc3RlbmVyOihpZDxXZWJHZW9sb2NhdGlvblBvbGlj
eUxpc3RlbmVyPilsaXN0ZW5lcgogewotICAgIGlmIChnTGF5b3V0VGVzdENvbnRyb2xsZXItPmlz
R2VvbG9jYXRpb25QZXJtaXNzaW9uU2V0KCkpIHsKLSAgICAgICAgaWYgKGdMYXlvdXRUZXN0Q29u
dHJvbGxlci0+Z2VvbG9jYXRpb25QZXJtaXNzaW9uKCkpCi0gICAgICAgICAgICBbbGlzdGVuZXIg
YWxsb3ddOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBbbGlzdGVuZXIgZGVueV07Ci0gICAg
fQorICAgIC8vIEZJWE1FOiBXaGF0J3MgdGhlIHJlYXNvbiBmb3IgaXNHZW9sb2NhdGlvblBlcm1p
c3Npb25TZXQoKSBleGlzdGVuY2U/IFRoZSBkZWxlZ2F0ZSBzaG91bGQgYWx3YXlzIHJlc3BvbmQg
YnkgZWl0aGVyIGFsbG93IG9yIGRlbnkuCisgICAgaWYgKGdMYXlvdXRUZXN0Q29udHJvbGxlci0+
aXNHZW9sb2NhdGlvblBlcm1pc3Npb25TZXQoKSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmdl
b2xvY2F0aW9uUGVybWlzc2lvbigpKQorICAgICAgICBbbGlzdGVuZXIgYWxsb3ddOworICAgIGVs
c2UKKyAgICAgICAgW2xpc3RlbmVyIGRlbnldOwogfQogCiAtIChCT09MKXdlYlZpZXc6KFdlYlZp
ZXcgKilzZW5kZXIgc2hvdWxkSGFsdFBsdWdpbjooRE9NTm9kZSAqKXBsdWdpbk5vZGUKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDYwMzc2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTAtMDUtMjggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDM0CisgICAg
ICAgIFJFR1JFU1NJT04gKHI1OTgxMSk6IEdlb2xvY2F0aW9uIGNhbGxiYWNrcyBjYW5ub3QgYmUg
Y3JlYXRlZAorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6IEFsbCB0ZXN0cyB1c2Vk
IHRvIGJlIGRpc2FibGVkLiBOb3cgb25seSB0aG9zZSB0aGF0IGZhbCB3aXRoIGFuCisgICAgICAg
IGFzc2VydGlvbiBhcmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDogVW5za2lw
cGVkIHRlc3RzIHRoYXQgd2UgYWZmZWN0ZWQgYnkgdGhpcyBidWcuCisKKyAgICAgICAgKiBmYXN0
L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZXJyb3IuanM6IFRoZSB0ZXN0IGNoZWNrcyB3
aGF0IGhhcHBlbnMgaWYgcmVzb2x2aW5nCisgICAgICAgIHBvc2l0aW9uIGZhaWxzLiBTbywgaXQg
aGFzIHRvIGVuYWJsZSBwZXJtaXNzaW9uLCBhbmQgaGFzIHRvIHVzZSBhbiBlcnJvciBjb2RlIHRo
YXQgYWN0dWFsbHkKKyAgICAgICAgZXhpc3RzLgorCisgICAgICAgICogZmFzdC9kb20vR2VvbG9j
YXRpb24vc2NyaXB0LXRlc3RzL21heGltdW0tYWdlLmpzOiBFcnJvciBjb2RlIDEgaXMgcGVybWlz
c2lvbiBkZW5pZWQsCisgICAgICAgIGJ1dCBwZXJtaXNzaW9uIGlzIG5vdCBkZW5pZWQgaW4gdGhp
cyB0ZXN0LiBVc2UgYW4gZXJyb3IgY29kZSB0aGF0IGFncmVlcyB3aXRoIHJlYWxpdHkuCisKKyAg
ICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvd2F0Y2guanM6IERpdHRv
LgorICAgICAgICAKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMv
cmVlbnRyYW50LWVycm9yLmpzOiBUaGUgdGVzdCBjaGVja3Mgd2hhdCBoYXBwZW5zIGlmCisgICAg
ICAgIHJlc29sdmluZyBwb3NpdGlvbiBmYWlscy4gU28sIGl0IGhhcyB0byBlbmFibGUgcGVybWlz
c2lvbi4KKworMjAxMC0wNS0yOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIGEg
c2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogZmFzdC9k
b20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2Vycm9yLmpzOgorICAgICAgICAqIGZhc3QvZG9t
L0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9tYXhpbXVtLWFnZS5qczoKKyAgICAgICAgKiBmYXN0
L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LWVycm9yLmpzOgorICAgICAg
ICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5qczoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoK
KwogMjAxMC0wNS0yOCAgQ2hhbmcgU2h1ICA8Q2hhbmcuU2h1QG5va2lhLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9lcnJvci5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZXJyb3Iu
anMJKHJldmlzaW9uIDYwMzExKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
c2NyaXB0LXRlc3RzL2Vycm9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOSBAQAogZGVz
Y3JpcHRpb24oIlRlc3RzIEdlb2xvY2F0aW9uIGVycm9yIGNhbGxiYWNrIHVzaW5nIHRoZSBtb2Nr
IHNlcnZpY2UuIik7CiAKLXZhciBtb2NrQ29kZSA9IDA7Cit2YXIgbW9ja0NvZGUgPSAyOwogdmFy
IG1vY2tNZXNzYWdlID0gImRlYnVnIjsKIAord2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNl
dEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOwogCiB2YXIg
ZXJyb3I7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVz
dHMvbWF4aW11bS1hZ2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2Vv
bG9jYXRpb24vc2NyaXB0LXRlc3RzL21heGltdW0tYWdlLmpzCShyZXZpc2lvbiA2MDMxMSkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9tYXhpbXVtLWFn
ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgdmFyIG1vY2tMYXRpdHVkZSA9IDUx
LjQ3ODsKIHZhciBtb2NrTG9uZ2l0dWRlID0gLTAuMTY2OwogdmFyIG1vY2tBY2N1cmFjeSA9IDEw
MC4wOwogCi12YXIgbW9ja0NvZGUgPSAxOwordmFyIG1vY2tDb2RlID0gMjsKIHZhciBtb2NrTWVz
c2FnZSA9ICd0ZXN0JzsKIAogdmFyIHBvc2l0aW9uOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3JlZW50cmFudC1lcnJvci5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRy
YW50LWVycm9yLmpzCShyZXZpc2lvbiA2MDMxMSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9yZWVudHJhbnQtZXJyb3IuanMJKHdvcmtpbmcgY29weSkK
QEAgLTMsNiArMyw3IEBAIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHJlZW50cmFudCBjYWxscyAK
IHZhciBtb2NrQ29kZSA9IDA7CiB2YXIgbW9ja01lc3NhZ2UgPSAndGVzdCc7CiAKK3dpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7CiB3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IobW9ja0NvZGUs
IG1vY2tNZXNzYWdlKTsKIAogdmFyIGVycm9yOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3dhdGNoLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5qcwkocmV2aXNpb24g
NjAzMTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMv
d2F0Y2guanMJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIHZhciBtb2NrTGF0aXR1ZGUg
PSA1MS40Nzg7CiB2YXIgbW9ja0xvbmdpdHVkZSA9IC0wLjE2NjsKIHZhciBtb2NrQWNjdXJhY3kg
PSAxMDAuMDsKIAotdmFyIG1vY2tDb2RlID0gMTsKK3ZhciBtb2NrQ29kZSA9IDI7CiB2YXIgbW9j
a01lc3NhZ2UgPSAndGVzdCc7CiAKIHZhciBwb3NpdGlvbjsKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkCShyZXZpc2lvbiA2MDMxMSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9T
a2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC01OTM2LDkgKzU5MzYsMyBAQCBlZGl0aW5nL3NwZWxs
aW5nL2NvbnRleHQtbWVudS1zdWdnZXN0aW9uCiAKICMgSW5kZXhlZERCIGlzIG5vdCB5ZXQgZW5h
YmxlZC4KIHN0b3JhZ2UvaW5kZXhlZGRiCi0KLSMgVGhlc2UgdGVzdHMgYXJlIGZhaWxpbmcgYmVj
YXVzZSBvZiBET00gcHJvYmxlbXMgYXJvdW5kIGdldEN1cnJlbnRQb3NpdGlvbgotIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NTQKLWZhc3QvZG9tL0dlb2xvY2F0
aW9uL2FyZ3VtZW50LXR5cGVzLmh0bWwKLWZhc3QvZG9tL0dlb2xvY2F0aW9uL25vdGltZXItYWZ0
ZXItdW5sb2FkLmh0bWwKLWZhc3QvZG9tL0dlb2xvY2F0aW9uL3RpbWVvdXQtemVyby5odG1sCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAkocmV2aXNpb24gNjAzMTEpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtNjcsOSArNjcsNiBA
QCBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWVycm9yLWFib3J0Lmh0bWwKICMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MDM2CiBodHRwL3Rlc3RzL21lZGlhL3ZpZGVv
LXBsYXktc3VzcGVuZC5odG1sCiAKLSMgVGhpcyBwb3J0IGRvZXNuJ3Qgc3VwcG9ydCBHZW9sb2Nh
dGlvbi4KLWZhc3QvZG9tL0dlb2xvY2F0aW9uCi0KICMgVGhpcyBwb3J0IGRvZXNuJ3Qgc3VwcG9y
dCBOb3RpZmljYXRpb25zLgogZmFzdC9ub3RpZmljYXRpb25zCiAKQEAgLTMwMSwzICsyOTgsOCBA
QCBzdG9yYWdlL2luZGV4ZWRkYgogIyBUaGlzIHBvcnQgZG9lc24ndCBzdXBwb3J0IERldmljZU9y
aWVudGF0aW9uLgogZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24KIGZhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcHJvcGVydGllcy1vbi1kZXZpY2Utb3JpZW50YXRpb24uaHRtbAorCisjIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTkwOAorZmFzdC9kb20vR2VvbG9jYXRp
b24vbWF4aW11bS1hZ2UuaHRtbAorZmFzdC9kb20vR2VvbG9jYXRpb24vcmVlbnRyYW50LWVycm9y
Lmh0bWwKK2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3JlZW50cmFudC1zdWNjZXNzLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57561</attachid>
            <date>2010-06-01 10:20:06 -0700</date>
            <delta_ts>2010-06-01 10:30:20 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>Geolocation2.txt</filename>
            <type>text/plain</type>
            <size>47962</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDQ4MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDUtMjggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDM0CisgICAgICAgIFJF
R1JFU1NJT04gKHI1OTgxMSk6IEdlb2xvY2F0aW9uIGNhbGxiYWNrcyBjYW5ub3QgYmUgY3JlYXRl
ZAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogRG9uJ3QgYXBwZW5kIGJvdGggV2Vi
Q29yZS5HZW9sb2NhdGlvbi5leHAgYW5kIFdlYkNvcmUuQ2xpZW50QmFzZWRHZW9sb2NhdGlvbi5l
eHAsCisgICAgICAgIHRoZXkgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KKworICAgICAgICAqIFdl
YkNvcmUuR2VvbG9jYXRpb24uZXhwOiBUb3VjaGVkIHRvIGZvcmNlIC5leHAgZmlsZSByZWJ1aWxk
LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVk
IEdlb2xvY2F0aW9uU2VydmljZSByZWxhdGVkIGZpbGVzLgorCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQb3Np
dGlvbkNhbGxiYWNrKTogRnVuY3Rpb25zIGRlZmluZWQgaW4gSmF2YVNjcmlwdCBjb2RlIG5vIGxv
bmdlciBpbmhlcml0CisgICAgICAgIGZyb20gSW50ZXJuYWxGdW5jdGlvbiwgdGhleSBpbmhlcml0
IGZyb20gSlNGdW5jdGlvbi4gVGhpcyBjaGVjayBpcyBzdGlsbCBpbXBlcmZlY3QsIGJlY2F1c2UK
KyAgICAgICAgaXQncyBub3QgY2xlYXIgd2hhdCBkZWZpbml0aW9uIG9mICJmdW5jdGlvbiIgc2hv
dWxkIHJlYWxseSBiZSB1c2VkLCBpZiBhbnkgLSBvdGhlciBiaW5kaW5ncworICAgICAgICBjb2Rl
IG5ldmVyIGNoZWNrcyBjYWxsYmFjayB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUG9z
aXRpb25FcnJvckNhbGxiYWNrKTogRGl0dG8uCisKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9u
Lmg6IERvbid0IGluY2x1ZGUgR2VvbG9jYXRpb25TZXJ2aWNlLmggdW5sZXNzIGl0J3MgZ29pbmcg
dG8gYmUgdXNlZC4KKwogMjAxMC0wNi0wMSAgQWRhbSBMYW5nbGV5ICA8YWdsQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UJKHJldmlzaW9uIDYwNDgwKQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MDEsMTQgKzkwMSwxMyBAQCBpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxF
X1ZJREVPLCQoRkVBVFVSCiAgICAgIFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUyA6PSAkKFdF
QkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUykgV2ViQ29yZS5WaWRlby5leHAKIGVuZGlmCiAKLQor
aWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9HRU9MT0NBVElPTiwkKEZFQVRVUkVfREVGSU5FUykp
LCBFTkFCTEVfR0VPTE9DQVRJT04pCiBpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX0NMSUVOVF9C
QVNFRF9HRU9MT0NBVElPTiwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfQ0xJRU5UX0JBU0VE
X0dFT0xPQ0FUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUyA6PSAkKFdFQkNP
UkVfRVhQT1JUX0RFUEVOREVOQ0lFUykgV2ViQ29yZS5DbGllbnRCYXNlZEdlb2xvY2F0aW9uLmV4
cAotZW5kaWYKLQotaWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9HRU9MT0NBVElPTiwkKEZFQVRV
UkVfREVGSU5FUykpLCBFTkFCTEVfR0VPTE9DQVRJT04pCitlbHNlCiAgICAgV0VCQ09SRV9FWFBP
UlRfREVQRU5ERU5DSUVTIDo9ICQoV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTKSBXZWJDb3Jl
Lkdlb2xvY2F0aW9uLmV4cAogZW5kaWYKK2VuZGlmCiAKIGlmZXEgKCQoc2hlbGwgZ2NjIC1FIC1Q
IC1kTSAkKEZSQU1FV09SS19GTEFHUykgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUGxh
dGZvcm0uaCB8IGdyZXAgV1RGX1VTRV9QUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sgfCBj
dXQgLWQnICcgLWYzKSwgMSkKICAgICBXRUJDT1JFX0VYUE9SVF9ERVBFTkRFTkNJRVMgOj0gJChX
RUJDT1JFX0VYUE9SVF9ERVBFTkRFTkNJRVMpIFdlYkNvcmUuUHJvdGVjdGlvblNwYWNlQXV0aENh
bGxiYWNrLmV4cApJbmRleDogV2ViQ29yZS9XZWJDb3JlLkdlb2xvY2F0aW9uLmV4cAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuR2VvbG9jYXRpb24uZXhwCShyZXZpc2lvbiA2MDQ4MCkK
KysrIFdlYkNvcmUvV2ViQ29yZS5HZW9sb2NhdGlvbi5leHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
MiArMSwzIEBACiBfX1pON1dlYkNvcmUyMkdlb2xvY2F0aW9uU2VydmljZU1vY2sxMXNldFBvc2l0
aW9uRU4zV1RGMTBQYXNzUmVmUHRySU5TXzExR2VvcG9zaXRpb25FRUUKIF9fWk43V2ViQ29yZTIy
R2VvbG9jYXRpb25TZXJ2aWNlTW9jazhzZXRFcnJvckVOM1dURjEwUGFzc1JlZlB0cklOU18xM1Bv
c2l0aW9uRXJyb3JFRUUKKwpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDYwNDgwKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExODMsOCArMTE4Myw2IEBACiAJCTU5
QjU5NzczMTEwODY1NkIwMDcxNTlFOCAvKiBCcmlkZ2VKU0MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlCNTk3NzIxMTA4NjU2QjAwNzE1OUU4IC8q
IEJyaWRnZUpTQy5jcHAgKi87IH07CiAJCTU5QjU5Nzc1MTEwODY1NzkwMDcxNTlFOCAvKiBCcmlk
Z2VKU0MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5
QjU5Nzc0MTEwODY1NzkwMDcxNTlFOCAvKiBCcmlkZ2VKU0MuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1OUJDMzkzRjExMDU0QTEzMDBGRDg1REIg
LyogSmF2YVN0cmluZ0pTQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTlCQzM5M0UxMTA1NEExMzAwRkQ4NURCIC8qIEphdmFTdHJpbmdKU0MuaCAqLzsg
fTsKLQkJNTlDNzdGMkExMDU0NUIzQjAwNTA2MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlDNzdG
MjgxMDU0NUIzQjAwNTA2MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2suY3BwICovOyB9Owot
CQk1OUM3N0YyQjEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlDNzdGMjkxMDU0
NUIzQjAwNTA2MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2suaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1OUU1NjBBNzExMDUzMzY2MDBBQTEy
NTggLyogSmF2YUNsYXNzSlNDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1OUU1NjBBNjExMDUzMzY2MDBBQTEyNTggLyogSmF2YUNsYXNzSlNDLmggKi87
IH07CiAJCTU5RTU2MEE5MTEwNTMzNkYwMEFBMTI1OCAvKiBKYXZhQ2xhc3NKU0MuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlFNTYwQTgxMTA1MzM2
RjAwQUExMjU4IC8qIEphdmFDbGFzc0pTQy5jcHAgKi87IH07CiAJCTU5RTg0MjY2MTEwOUU1QTIw
MDAzMDVBRCAvKiBKTklCcmlkZ2VKU0MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU5RTg0MjY1MTEwOUU1QTIwMDAzMDVBRCAvKiBKTklCcmlkZ2VKU0Mu
aCAqLzsgfTsKQEAgLTQ2OTEsOCArNDY4OSw2IEBACiAJCUJDRTFDNDQwMEQ5ODMwRjQwMDNCMDJG
MiAvKiBKU0xvY2F0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRTFDNDNGMEQ5ODMwRjQwMDNCMDJGMiAvKiBKU0xvY2F0aW9uQ3Vz
dG9tLmNwcCAqLzsgfTsKIAkJQkNFM0JFQzIwRDIyMkIxRDAwN0UwNkU0IC8qIFRhZ05vZGVMaXN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTNC
RUMwMEQyMjJCMUQwMDdFMDZFNCAvKiBUYWdOb2RlTGlzdC5jcHAgKi87IH07CiAJCUJDRTNCRUMz
MEQyMjJCMUQwMDdFMDZFNCAvKiBUYWdOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFM0JFQzEwRDIyMkIxRDAwN0UwNkU0IC8qIFRhZ05v
ZGVMaXN0LmggKi87IH07Ci0JCUJDRTQ5NEFCMEY0RjVFOUUwMDg0RTMxOSAvKiBHZW9sb2NhdGlv
blNlcnZpY2VNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRTQ5NEE5MEY0RjVFOUUwMDg0RTMxOSAvKiBHZW9sb2NhdGlvblNlcnZpY2VNYWMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwotCQlCQ0U0OTRBQzBGNEY1RTlF
MDA4NEUzMTkgLyogR2VvbG9jYXRpb25TZXJ2aWNlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFNDk0QUEwRjRGNUU5RTAwODRFMzE5IC8qIEdl
b2xvY2F0aW9uU2VydmljZU1hYy5tbSAqLzsgfTsKIAkJQkNFNjU4RkYwRUE5MjQ4QTAwN0U0NTMz
IC8qIFRoZW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0U2NThGRTBFQTkyNDhBMDA3RTQ1MzMgLyogVGhlbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0U2NTlBOTBFQTkyN0I5MDA3RTQ1MzMg
LyogVGhlbWVUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNFNjU5QTgwRUE5MjdCOTAwN0U0NTMzIC8qIFRoZW1lVHlwZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0U2NTlFNjBFQTkyRkIy
MDA3RTQ1MzMgLyogVGhlbWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRTY1OUU1MEVBOTJGQjIwMDdFNDUzMyAvKiBUaGVtZU1hYy5oICovOyB9
OwpAQCAtNTEwNSw4ICs1MTAxLDYgQEAKIAkJRkU4MERBNjYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpT
R2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi87IH07CiAJ
CUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkQwRTlDNDcyRjAw
MEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi87IH07CiAJCUZFODBEQTcyMEU5QzQ3MkYw
MDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9u
RXJyb3IuaCAqLzsgfTsKLQkJRkVBQjkwMTIwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9u
U2VydmljZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRUFCOTAxMDBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCAqLzsg
fTsKLQkJRkVBQjkwMTMwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBQjkwMTEwRUE1
MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTY4MjMs
OCArNjgxNyw2IEBACiAJCTU5QjU5NzcyMTEwODY1NkIwMDcxNTlFOCAvKiBCcmlkZ2VKU0MuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQnJpZGdlSlNDLmNwcDsgcGF0
aCA9IGJyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTlCNTk3NzQxMTA4NjU3OTAwNzE1OUU4IC8qIEJyaWRnZUpTQy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCcmlkZ2VKU0MuaDsgcGF0aCA9IGJyaWRnZS9qc2MvQnJpZGdl
SlNDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5QkMzOTNFMTEwNTRBMTMwMEZE
ODVEQiAvKiBKYXZhU3RyaW5nSlNDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEphdmFTdHJpbmdKU0MuaDsgcGF0aCA9IGpzYy9KYXZhU3RyaW5nSlNDLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTU5Qzc3RjI4MTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2NhdGlv
blNlcnZpY2VNb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEdl
b2xvY2F0aW9uU2VydmljZU1vY2suY3BwOyBwYXRoID0gbW9jay9HZW9sb2NhdGlvblNlcnZpY2VN
b2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTlDNzdGMjkxMDU0NUIzQjAw
NTA2MTA0IC8qIEdlb2xvY2F0aW9uU2VydmljZU1vY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oOyBwYXRoID0gbW9jay9HZW9sb2Nh
dGlvblNlcnZpY2VNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5RTU2MEE2
MTEwNTMzNjYwMEFBMTI1OCAvKiBKYXZhQ2xhc3NKU0MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSmF2YUNsYXNzSlNDLmg7IHBhdGggPSBqc2MvSmF2YUNsYXNzSlNDLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5RTU2MEE4MTEwNTMzNkYwMEFBMTI1OCAvKiBK
YXZhQ2xhc3NKU0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSmF2
YUNsYXNzSlNDLmNwcDsgcGF0aCA9IGpzYy9KYXZhQ2xhc3NKU0MuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1OUU4NDI2NTExMDlFNUEyMDAwMzA1QUQgLyogSk5JQnJpZGdlSlND
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpOSUJyaWRnZUpTQy5oOyBwYXRo
ID0ganNjL0pOSUJyaWRnZUpTQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAy
MTEsOCArMTAyMDMsNiBAQAogCQlCQ0UxQzQzRjBEOTgzMEY0MDAzQjAyRjIgLyogSlNMb2NhdGlv
bkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0xvY2F0
aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFM0JFQzAwRDIy
MkIxRDAwN0UwNkU0IC8qIFRhZ05vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFRhZ05vZGVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNFM0JFQzEwRDIyMkIxRDAwN0UwNkU0IC8qIFRhZ05vZGVMaXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRhZ05vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUJDRTQ5NEE5MEY0RjVFOUUwMDg0RTMxOSAvKiBHZW9sb2NhdGlvblNlcnZpY2VN
YWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvbG9jYXRpb25TZXJ2aWNl
TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRTQ5NEFBMEY0RjVFOUUwMDg0
RTMxOSAvKiBHZW9sb2NhdGlvblNlcnZpY2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBHZW9sb2NhdGlvblNlcnZpY2VNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDRTY1OEZFMEVBOTI0OEEwMDdFNDUzMyAvKiBUaGVtZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaGVtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0U2NTlBODBFQTkyN0I5MDA3RTQ1MzMgLyogVGhlbWVUeXBlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaGVtZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDRTY1OUU1MEVBOTJGQjIwMDdFNDUzMyAvKiBUaGVtZU1hYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaGVtZU1hYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTA3MDAsOCArMTA2OTAsNiBAQAogCQlGRTgwREE2RDBFOUM0NzJG
MDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTUG9zaXRpb25FcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQb3NpdGlvbkVycm9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQTQxMzNGMTA1RDY3QUUwMDA3MjM2RiAvKiBXZWJDb3Jl
LkRyYWdTdXBwb3J0LmV4cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuZXhwb3J0czsgcGF0aCA9IFdl
YkNvcmUuRHJhZ1N1cHBvcnQuZXhwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRUFC
OTAxMDBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb2xvY2F0aW9uU2VydmljZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFQUI5MDExMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9s
b2NhdGlvblNlcnZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvbG9j
YXRpb25TZXJ2aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFRkQxMDJDMTA1
QzQxNDcwMDAyODU1RSAvKiBXZWJDb3JlLkNvbnRleHRNZW51cy5leHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmV4cG9ydHM7IHBhdGggPSBXZWJDb3JlLkNvbnRleHRNZW51cy5leHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAK
QEAgLTExNzY1LDggKzExNzUzLDYgQEAKIAkJNTlDNzdGMTAxMDU0NTkxQzAwNTA2MTA0IC8qIG1v
Y2sgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTU5Qzc3
RjI4MTA1NDVCM0IwMDUwNjEwNCAvKiBHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcCAqLywKLQkJ
CQk1OUM3N0YyOTEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oICov
LAogCQkJKTsKIAkJCW5hbWUgPSBtb2NrOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTExOTQ2LDggKzExOTMyLDYgQEAKIAkJCQkwNjZDNzcyQzBBQjYwM0QyMDAyMzhDQzQgLyogRmls
ZUNob29zZXJNYWMubW0gKi8sCiAJCQkJNTE0QjNGNzUwQzcyMjA1NTAwMDUzMERGIC8qIEZpbGVT
eXN0ZW1NYWMubW0gKi8sCiAJCQkJOTM1QzQ3NkMwOUFDNEQ2MzAwQTZBQUI0IC8qIEZvdW5kYXRp
b25FeHRyYXMuaCAqLywKLQkJCQlCQ0U0OTRBOTBGNEY1RTlFMDA4NEUzMTkgLyogR2VvbG9jYXRp
b25TZXJ2aWNlTWFjLmggKi8sCi0JCQkJQkNFNDk0QUEwRjRGNUU5RTAwODRFMzE5IC8qIEdlb2xv
Y2F0aW9uU2VydmljZU1hYy5tbSAqLywKIAkJCQk5MzVDNDc2RTA5QUM0RDczMDBBNkFBQjQgLyog
S2V5RXZlbnRNYWMubW0gKi8sCiAJCQkJNTIxRDQ2RjUxMUFFQzk4MTAwNTE0NjEzIC8qIEtpbGxS
aW5nTWFjLm1tICovLAogCQkJCTY1OTM5MjM5MDlBRTQzNUMwMDJDNTMxRiAvKiBLVVJMTWFjLm1t
ICovLApAQCAtMTU4ODEsOCArMTU4NjUsNiBAQAogCQkJCTA2NkM3NzJBMEFCNjAzQjcwMDIzOEND
NCAvKiBGaWxlQ2hvb3Nlci5oICovLAogCQkJCTUxNEIzRjcyMEM3MjIwNDcwMDA1MzBERiAvKiBG
aWxlU3lzdGVtLmggKi8sCiAJCQkJQkMwNzNCQTkwQzM5OUIxRjAwMEY1OTc5IC8qIEZsb2F0Q29u
dmVyc2lvbi5oICovLAotCQkJCUZFQUI5MDEwMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlv
blNlcnZpY2UuY3BwICovLAotCQkJCUZFQUI5MDExMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2Nh
dGlvblNlcnZpY2UuaCAqLywKIAkJCQlCQzNCQzI5QjBFOTFBQjBGMDA4MzU1ODggLyogSG9zdFdp
bmRvdy5oICovLAogCQkJCTUyMUQ0NkY3MTFBRUM5QjEwMDUxNDYxMyAvKiBLaWxsUmluZy5oICov
LAogCQkJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmNwcCAqLywKQEAgLTE3OTMx
LDkgKzE3OTEzLDYgQEAKIAkJCQlCQzU2Q0IyNDEwRDVBQzgwMDBBNzdDNjQgLyogR2VvbG9jYXRp
b25FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1NkNCMjUxMEQ1QUM4MDAwQTc3QzY0IC8q
IEdlb2xvY2F0aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU5NjIyOTdBMTEzM0VG
RTIwMERDNENCQiAvKiBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAot
CQkJCUZFQUI5MDEzMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUJDRTQ5NEFCMEY0RjVFOUUwMDg0RTMxOSAvKiBHZW9sb2NhdGlvblNl
cnZpY2VNYWMuaCBpbiBIZWFkZXJzICovLAotCQkJCTU5Qzc3RjJCMTA1NDVCM0IwMDUwNjEwNCAv
KiBHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTgwRDdDOTBF
OUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNE
QTZDMEQwMDZDRDYwMEVGNkYyNiAvKiBHbHlwaEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzVENEFBN0ExMTZCQUZCNjAwNjlDQTkzIC8qIEdseXBoTWV0cmljc01hcC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yMDI1Nyw5ICsyMDIzNiw2IEBACiAJCQkJRkU4MEQ3QzUwRTlDMUYyNTAwMEQ2Rjc1
IC8qIEdlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNTZDQjIxMTBENUFDODAw
MEE3N0M2NCAvKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTk2MjI5NzgxMTMzRUZENzAwREM0Q0JCIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlGRUFCOTAxMjBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRp
b25TZXJ2aWNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDRTQ5NEFDMEY0RjVFOUUwMDg0RTMx
OSAvKiBHZW9sb2NhdGlvblNlcnZpY2VNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQk1OUM3N0Yy
QTEwNTQ1QjNCMDA1MDYxMDQgLyogR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCMkMzREE2RDBEMDA2Q0Q2MDBFRjZGMjYgLyogR2x5cGhQYWdlVHJlZU5vZGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBRkZDODMwRDAwQTVDMTAwMzAwNzREIC8qIEdseXBo
UGFnZVRyZWVOb2RlTWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNTNDNjA4MERBNTZDNTcw
MDIxRUI1RCAvKiBHcmFkaWVudC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gNjA0ODApCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSwxMiArMzEsMTUgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKLSNpbmNsdWRlICJHZW9s
b2NhdGlvblNlcnZpY2UuaCIKICNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCIK
ICNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIkpT
RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiUG9zaXRpb25PcHRpb25zLmgiCi0jaW5jbHVkZSA8cnVu
dGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+
CisKKyNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyNpbmNsdWRlICJHZW9s
b2NhdGlvblNlcnZpY2UuaCIKKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKQEAgLTQ2LDcgKzQ5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3Rh
dGljIFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gY3JlYXRlUG9zaXRpb25DYWxsYmFjayhF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCiB7CiAgICAgLy8gVGhlIHNwZWMgc3BlY2lmaWVzICdGdW5jdGlvbk9ubHknIGZvciB0
aGlzIG9iamVjdC4KLSAgICBpZiAoIXZhbHVlLmluaGVyaXRzKCZJbnRlcm5hbEZ1bmN0aW9uOjpp
bmZvKSkgeworICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGRpc2FsbG93cyBjYWxsYWJsZSBvYmpl
Y3RzIGNyZWF0ZWQgdmlhIEpTQyBBUEkuIEl0J3Mgbm90IGNsZWFyIHdoYXQgZXhhY3RseSB0aGUg
c3BlY2lmaWNhdGlvbiBpbnRlbmRzIHRvIGFsbG93LgorICAgIGlmICghdmFsdWUuaW5oZXJpdHMo
JkpTRnVuY3Rpb246OmluZm8pKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBF
X01JU01BVENIX0VSUik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTYyLDcgKzY2LDgg
QEAgc3RhdGljIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPgogICAgICAgICByZXR1
cm4gMDsKIAogICAgIC8vIFRoZSBzcGVjIHNwZWNpZmllcyAnRnVuY3Rpb25Pbmx5JyBmb3IgdGhp
cyBvYmplY3QuCi0gICAgaWYgKCF2YWx1ZS5pbmhlcml0cygmSW50ZXJuYWxGdW5jdGlvbjo6aW5m
bykpIHsKKyAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBkaXNhbGxvd3MgY2FsbGFibGUgb2JqZWN0
cyBjcmVhdGVkIHZpYSBKU0MgQVBJLiBJdCdzIG5vdCBjbGVhciB3aGF0IGV4YWN0bHkgdGhlIHNw
ZWNpZmljYXRpb24gaW50ZW5kcyB0byBhbGxvdy4KKyAgICBpZiAoIXZhbHVlLmluaGVyaXRzKCZK
U0Z1bmN0aW9uOjppbmZvKSkgewogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9N
SVNNQVRDSF9FUlIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkluZGV4OiBXZWJDb3JlL3Bh
Z2UvR2VvbG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24u
aAkocmV2aXNpb24gNjA0ODApCisrKyBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2RlZmluZSBHZW9sb2NhdGlvbl9oCiAKICNpbmNs
dWRlICJHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuaCIKLSNpbmNsdWRlICJHZW9sb2NhdGlvblNl
cnZpY2UuaCIKICNpbmNsdWRlICJHZW9wb3NpdGlvbi5oIgogI2luY2x1ZGUgIlBvc2l0aW9uQ2Fs
bGJhY2suaCIKICNpbmNsdWRlICJQb3NpdGlvbkVycm9yLmgiCkBAIC0zNiw2ICszNSwxMCBAQAog
I2luY2x1ZGUgIlBvc2l0aW9uT3B0aW9ucy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAKKyNpZiAh
RU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKKyNpbmNsdWRlICJHZW9sb2NhdGlvblNl
cnZpY2UuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwpJ
bmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA2MDQ4MCkKKysrIFdlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNCBAQAorMjAxMC0wNS0yOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0MzQKKyAgICAgICAgUkVHUkVT
U0lPTiAocjU5ODExKTogR2VvbG9jYXRpb24gY2FsbGJhY2tzIGNhbm5vdCBiZSBjcmVhdGVkCisK
KyAgICAgICAgUmVtb3ZpbmcgdW51c2VkIFdlYkdlb2xvY2F0aW9uTW9jay4KKworICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEwLTA1LTMxICBMeW9uIENo
ZW4gIDxsaWFjaGVuQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEu
CkluZGV4OiBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2
MDQ4MCkKKysrIFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTEwLDggKzExMCw2IEBACiAJCTUxRkRDNEQzMEIwQUY1QzEwMEY4NEVCMyAv
KiBXZWJIaXN0b3J5SXRlbVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRkRDNEQyMEIwQUY1QzEwMEY4NEVCMyAvKiBXZWJIaXN0b3J5SXRl
bVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MjQxQURGNTBCMUJDNDhBMDA0MDEyQkQgLyogV2ViQ2FjaGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNDFBREYzMEIxQkM0OEEwMDQwMTJC
RCAvKiBXZWJDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUyNDFBREY2MEIxQkM0OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNDFBREY0MEIxQkM0OEEw
MDQwMTJCRCAvKiBXZWJDYWNoZS5tbSAqLzsgfTsKLQkJNTlDNzdGMzUxMDU0NUY3RTAwNTA2MTA0
IC8qIFdlYkdlb2xvY2F0aW9uTW9jay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU5Qzc3RjMzMTA1NDVGN0UwMDUwNjEwNCAvKiBXZWJHZW9sb2NhdGlv
bk1vY2subW0gKi87IH07Ci0JCTU5Qzc3RjRCMTA1NDcxRTcwMDUwNjEwNCAvKiBXZWJHZW9sb2Nh
dGlvbk1vY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1OUM3N0Y0QTEwNTQ3MUU3MDA1MDYxMDQgLyogV2ViR2VvbG9jYXRpb25Nb2NrUHJp
dmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTVEN0JGODE0MEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEN0JGODEyMEMyQTFEOTAwMDhDRTA2
RCAvKiBXZWJJbnNwZWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1RDdCRjgxNTBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9yLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ3QkY4MTMw
QzJBMUQ5MDAwOENFMDZEIC8qIFdlYkluc3BlY3Rvci5tbSAqLzsgfTsKIAkJNURFODNBN0EwRDBG
N0Y5NDAwQ0FEMTJBIC8qIFdlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5uaWIgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVERTgzQTc0MEQwRjdGOTQw
MENBRDEyQSAvKiBXZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwubmliICovOyB9OwpAQCAtNTEw
LDggKzUwOCw2IEBACiAJCTUxRkRDNEQyMEIwQUY1QzEwMEY4NEVCMyAvKiBXZWJIaXN0b3J5SXRl
bVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSGlzdG9yeUl0
ZW1Qcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNDFBREYzMEIxQkM0
OEEwMDQwMTJCRCAvKiBXZWJDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI0MUFERjQwQjFC
QzQ4QTAwNDAxMkJEIC8qIFdlYkNhY2hlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
OUM3N0YzMzEwNTQ1RjdFMDA1MDYxMDQgLyogV2ViR2VvbG9jYXRpb25Nb2NrLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViR2VvbG9jYXRpb25Nb2NrLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1OUM3N0Y0QTEwNTQ3MUU3MDA1MDYxMDQgLyog
V2ViR2VvbG9jYXRpb25Nb2NrUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHZW9sb2NhdGlvbk1vY2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVEN0JGODEyMEMyQTFEOTAwMDhDRTA2RCAvKiBXZWJJbnNwZWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1RDdCRjgxMzBDMkExRDkwMDA4Q0UwNkQgLyogV2ViSW5zcGVjdG9y
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkluc3BlY3Rv
ci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURFODNBNzUwRDBGN0Y5NDAwQ0FE
MTJBIC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB3cmFwcGVyLm5pYjsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9q
L1dlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5uaWI7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgfTsKQEAgLTEyMzQsOCArMTIzMCw2IEBACiAJCQkJOTMxNjMzRUUwQUVERkZBRTAwNjJCOTJE
IC8qIFdlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tICovLAogCQkJCUJDN0Y4ODQ5MTBDODc3NUEwMEQ2
MTMzRCAvKiBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJDbGllbnQuaCAqLywKIAkJCQlCQzdGODg0
QTEwQzg3NzVBMDBENjEzM0QgLyogV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50Lm1tICov
LAotCQkJCTU5Qzc3RjMzMTA1NDVGN0UwMDUwNjEwNCAvKiBXZWJHZW9sb2NhdGlvbk1vY2subW0g
Ki8sCi0JCQkJNTlDNzdGNEExMDU0NzFFNzAwNTA2MTA0IC8qIFdlYkdlb2xvY2F0aW9uTW9ja1By
aXZhdGUuaCAqLywKIAkJCQk1MTQ5NENENDBDN0VCREUwMDA0MTc4QzUgLyogV2ViSWNvbkRhdGFi
YXNlQ2xpZW50LmggKi8sCiAJCQkJNTE0OTRDRDUwQzdFQkRFMDAwNDE3OEM1IC8qIFdlYkljb25E
YXRhYmFzZUNsaWVudC5tbSAqLywKIAkJCQk5Q0UxRjhBMzAyQTVDNkYzMEVDQTJBQ0QgLyogV2Vi
SW1hZ2VSZW5kZXJlckZhY3RvcnkubSAqLywKQEAgLTE0MTQsNyArMTQwOCw2IEBACiAJCQkJOTM5
ODEwNkYwODI0QkYwMTAwOERGMDM4IC8qIFdlYkZyYW1lVmlld0ludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5Mzk4MTBBRjA4MjRCRjAxMDA4REYwMzggLyogV2ViRnJhbWVWaWV3UHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3Rjg4NEIxMEM4Nzc1QTAwRDYxMzNEIC8qIFdlYkdl
b2xvY2F0aW9uQ29udHJvbGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTlDNzdGNEIx
MDU0NzFFNzAwNTA2MTA0IC8qIFdlYkdlb2xvY2F0aW9uTW9ja1ByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDN0Y4ODlFMTBDOUQzMEMwMEQ2MTMzRCAvKiBXZWJHZW9sb2NhdGlvblBvc2l0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdGODhBNTEwQzlEODhCMDBENjEzM0QgLyogV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTAx
MjA4MjRCRjAxMDA4REYwMzggLyogV2ViSGlzdG9yeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xODEz
LDcgKzE4MDYsNiBAQAogCQkJCTkzMTYzM0VGMEFFREZGQUUwMDYyQjkyRCAvKiBXZWJGcmFtZUxv
YWRlckNsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTgxMTA2MDgyNEJGMDEwMDhERjAz
OCAvKiBXZWJGcmFtZVZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzdGODg0QzEwQzg3NzVB
MDBENjEzM0QgLyogV2ViR2VvbG9jYXRpb25Db250cm9sbGVyQ2xpZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNTlDNzdGMzUxMDU0NUY3RTAwNTA2MTA0IC8qIFdlYkdlb2xvY2F0aW9uTW9jay5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUJDN0Y4ODlGMTBDOUQzMEMwMEQ2MTMzRCAvKiBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODExMTMwODI0QkYwMTAw
OERGMDM4IC8qIFdlYkhpc3RvcnkubW0gaW4gU291cmNlcyAqLywKIAkJCQk5Mzk4MTBCRDA4MjRC
RjAxMDA4REYwMzggLyogV2ViSGlzdG9yeUl0ZW0ubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFdl
YktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA2MDQ4MCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDUtMjggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDM0CisgICAgICAgIFJF
R1JFU1NJT04gKHI1OTgxMSk6IEdlb2xvY2F0aW9uIGNhbGxiYWNrcyBjYW5ub3QgYmUgY3JlYXRl
ZAorCisgICAgICAgIFJlbW92aW5nIHVudXNlZCBXZWJHZW9sb2NhdGlvbk1vY2suCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbk1vY2subW06IFJlbW92ZWQuCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25Nb2NrUHJpdmF0ZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYktpdC5leHA6CisKIDIwMTAtMDUtMzAgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBX
ZWJLaXQvbWFjL1dlYktpdC5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJLaXQuZXhw
CShyZXZpc2lvbiA2MDQ4MCkKKysrIFdlYktpdC9tYWMvV2ViS2l0LmV4cAkod29ya2luZyBjb3B5
KQpAQCAtMTIsNyArMTIsNiBAQAogLm9iamNfY2xhc3NfbmFtZV9XZWJGb3JtRGVsZWdhdGUKIC5v
YmpjX2NsYXNzX25hbWVfV2ViRnJhbWUKIC5vYmpjX2NsYXNzX25hbWVfV2ViRnJhbWVWaWV3Ci0u
b2JqY19jbGFzc19uYW1lX1dlYkdlb2xvY2F0aW9uTW9jawogLm9iamNfY2xhc3NfbmFtZV9XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uCiAub2JqY19jbGFzc19uYW1lX1dlYkhUTUxSZXByZXNlbnRhdGlv
bgogLm9iamNfY2xhc3NfbmFtZV9XZWJIVE1MVmlldwpJbmRleDogV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbk1vY2subW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbk1vY2subW0JKHJldmlzaW9uIDYwNDgwKQorKysg
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbk1vY2subW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaW1wb3J0ICJXZWJHZW9sb2NhdGlvbk1vY2tQcml2YXRlLmgiCi0KLSNp
bXBvcnQgPFdlYkNvcmUvR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9HZW9wb3NpdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9Qb3NpdGlvbkVycm9yLmg+Ci0jaW1w
b3J0IDx3dGYvQ3VycmVudFRpbWUuaD4KLQotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVz
aW5nIG5hbWVzcGFjZSBXVEY7Ci0KLUBpbXBsZW1lbnRhdGlvbiBXZWJHZW9sb2NhdGlvbk1vY2sK
LQotKyAodm9pZClzZXRQb3NpdGlvbjooZG91YmxlKWxhdGl0dWRlOihkb3VibGUpbG9uZ2l0dWRl
Oihkb3VibGUpYWNjdXJhY3kKLXsKLSNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgUmVmUHRy
PENvb3JkaW5hdGVzPiBjb29yZGluYXRlcyA9IENvb3JkaW5hdGVzOjpjcmVhdGUobGF0aXR1ZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbG9uZ2l0dWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZhbHNlLCAwLjAsICAvLyBhbHRpdHVkZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VyYWN5LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZh
bHNlLCAwLjAsICAvLyBhbHRpdHVkZUFjY3VyYWN5Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIDAuMCwgIC8vIGhlYWRpbmcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmYWxzZSwgMC4wKTsgIC8vIHNwZWVkCi0gICAgUmVmUHRyPEdlb3Bvc2l0aW9uPiBwb3NpdGlv
biA9IEdlb3Bvc2l0aW9uOjpjcmVhdGUoY29vcmRpbmF0ZXMucmVsZWFzZSgpLCBjdXJyZW50VGlt
ZSgpICogMTAwMC4wKTsKLSAgICBHZW9sb2NhdGlvblNlcnZpY2VNb2NrOjpzZXRQb3NpdGlvbihw
b3NpdGlvbi5yZWxlYXNlKCkpOwotI2VuZGlmCi19Ci0KLSsgKHZvaWQpc2V0RXJyb3I6KGludClj
b2RlOihOU1N0cmluZyAqKW1lc3NhZ2UKLXsKLSNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAg
UG9zaXRpb25FcnJvcjo6RXJyb3JDb2RlIGNvZGVFbnVtID0gc3RhdGljX2Nhc3Q8UG9zaXRpb25F
cnJvcjo6RXJyb3JDb2RlPihjb2RlKTsKLSAgICBSZWZQdHI8UG9zaXRpb25FcnJvcj4gZXJyb3Ig
PSBQb3NpdGlvbkVycm9yOjpjcmVhdGUoY29kZUVudW0sIG1lc3NhZ2UpOwotICAgIEdlb2xvY2F0
aW9uU2VydmljZU1vY2s6OnNldEVycm9yKGVycm9yLnJlbGVhc2UoKSk7Ci0jZW5kaWYKLX0KLQot
QGVuZApJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbk1vY2tQ
cml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbk1vY2tQcml2YXRlLmgJKHJldmlzaW9uIDYwNDgwKQorKysgV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbk1vY2tQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLQotQGludGVyZmFjZSBXZWJH
ZW9sb2NhdGlvbk1vY2sgOiBOU09iamVjdCB7Ci19Ci0KLSsgKHZvaWQpc2V0UG9zaXRpb246KGRv
dWJsZSlsYXRpdHVkZTooZG91YmxlKWxvbmdpdHVkZTooZG91YmxlKWFjY3VyYWN5OwotKyAodm9p
ZClzZXRFcnJvcjooaW50KWNvZGU6KE5TU3RyaW5nICopbWVzc2FnZTsKLUBlbmQKSW5kZXg6IFdl
YktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDYwNDgwKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzggQEAKKzIwMTAtMDUtMjggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDM0CisgICAgICAg
IFJFR1JFU1NJT04gKHI1OTgxMSk6IEdlb2xvY2F0aW9uIGNhbGxiYWNrcyBjYW5ub3QgYmUgY3Jl
YXRlZAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajogQWRkZWQgTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChjcmVh
dGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KTogVGVsbCB0aGUgdmlldyB0byB1c2UgTW9ja0dl
b2xvY2F0aW9uUHJvdmlkZXIuIAorICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3Rh
dGVCZWZvcmVUZXN0aW5nKTogTWFrZSBzdXJlIHRoYXQgbW9jayBub3RpZmljYXRpb25zIGRvbid0
IGxlYWsKKyAgICAgICAgaW50byBzdWJzZXF1ZW50IHRlc3RzLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKTogQ2hhbmdlZCB0byB1
c2UgTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IpOiBEaXR0by4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW06IEFkZGVkLgorICAg
ICAgICAoK1tNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRdKToKKyAgICAgICAgKC1bTW9j
a0dlb2xvY2F0aW9uUHJvdmlkZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtNb2NrR2VvbG9jYXRp
b25Qcm92aWRlciBzZXRQb3NpdGlvbjpdKToKKyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9uUHJv
dmlkZXIgc2V0RXJyb3I6XSk6CisgICAgICAgICgtW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHJl
Z2lzdGVyV2ViVmlldzpdKToKKyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgdW5y
ZWdpc3RlcldlYlZpZXc6XSk6CisgICAgICAgICgtW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIGxh
c3RQb3NpdGlvbl0pOgorICAgICAgICAoLVtNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzdG9wVGlt
ZXJdKToKKyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgdGltZXJGaXJlZF0pOgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAgICAgICgt
W1VJRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9t
T3JpZ2luOmZyYW1lOmxpc3RlbmVyOl0pOgorICAgICAgICBUaGlzIGRlbGVnYXRlIG1ldGhvZCBt
dXN0IHNlbmQgYSByZXNwb25zZS4gSSdtIG5vdCBzdXJlIHdoYXQgdGhlIHR3by1zdGFnZSBjaGVj
ayBpcyBzdXBwb3NlZAorICAgICAgICB0byBhY2hpZXZlLCBpdCBzZWVtcyB1bm5lY2Vzc2FyeS4K
KwogMjAxMC0wNi0wMSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgTm90IHJldmlld2VkLiBCdWlsZCBmaXguCkluZGV4OiBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDYwNDgwKQorKysgV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw4IEBACiAJCUJDRDA4QjNBMEUxMDU3RUYwMEE3RDBD
MSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0QwOEIzOTBFMTA1N0VGMDBBN0QwQzEgLyogQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlCQ0QwOEI3MTBFMTA1OUQyMDBBN0QwQzEg
LyogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0QwOEI3MDBFMTA1OUQyMDBBN0QwQzEgLyogQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJNYWMubW0gKi87IH07CiAJCUJDRjZDNjUwMEM5OEU5QzAwMEFDMDYz
RSAvKiBHQ0NvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNGNkM2NEYwQzk4RTlDMDAwQUMwNjNFIC8qIEdDQ29udHJvbGxlci5jcHAg
Ki87IH07CisJCUUxQjc4MTY1MTFBRjMxQjcwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92
aWRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
Qjc4MDg3MTFBRjE2NjkwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbSAqLzsg
fTsKKwkJRTFCNzgxNjcxMUFGMzFDMzAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUI3ODA4
NTExQUYxNjQzMDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaCAqLzsgfTsKIC8q
IEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVt
UHJveHkgc2VjdGlvbiAqLwpAQCAtMjc1LDYgKzI3Nyw4IEBACiAJCUJDRDA4QjM5MEUxMDU3RUYw
MEE3RDBDMSAvKiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRDA4QjcwMEUxMDU5RDIwMEE3RDBDMSAvKiBBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tOyBwYXRoID0gbWFjL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Y2
QzY0RjBDOThFOUMwMDBBQzA2M0UgLyogR0NDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBm
aWxlRW5jb2RpbmcgPSAzMDsgcGF0aCA9IEdDQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxQjc4MDg1MTFBRjE2NDMwMDdFMUJDMiAvKiBNb2NrR2VvbG9jYXRp
b25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNb2NrR2VvbG9j
YXRpb25Qcm92aWRlci5oOyBwYXRoID0gbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxQjc4MDg3MTFBRjE2NjkwMDdFMUJDMiAvKiBN
b2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1tOyBwYXRoID0gbWFjL01vY2tHZW9s
b2NhdGlvblByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBC
WEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCkBAIC0zNzgsNiArMzgyLDggQEAKIAkJCQlCQzAxMzFEODBDOTc3MjAx
MDA4NzMxN0QgLyogTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwICovLAogCQkJCUJDMDEzMUQ5MEM5
NzcyMDEwMDg3MzE3RCAvKiBMYXlvdXRUZXN0Q29udHJvbGxlci5oICovLAogCQkJCUJDQTE4QjIy
MEM5QjAxNEIwMDExNDM2OSAvKiBMYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSAqLywKKwkJCQlF
MUI3ODA4NTExQUYxNjQzMDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaCAqLywK
KwkJCQlFMUI3ODA4NzExQUYxNjY5MDA3RTFCQzIgLyogTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIu
bW0gKi8sCiAJCQkJQkNBMThCNkQwQzlCMDhEQjAwMTE0MzY5IC8qIE5hdmlnYXRpb25Db250cm9s
bGVyLmggKi8sCiAJCQkJQkNBMThCNkUwQzlCMDhEQjAwMTE0MzY5IC8qIE5hdmlnYXRpb25Db250
cm9sbGVyLm0gKi8sCiAJCQkJQkNBMThCMkYwQzlCMDFCNDAwMTE0MzY5IC8qIE9iakNDb250cm9s
bGVyLmggKi8sCkBAIC01NDYsNiArNTUyLDcgQEAKIAkJCQlCQzlEOTAyNTBDOTc0NzJFMDA5OUE0
QTMgLyogV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzlEOTAyNjBDOTc0NzJFMDA5
OUE0QTMgLyogV29ya1F1ZXVlSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4NUY2QjMxMDcx
NEUxMjAwN0FBMzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTFC
NzgxNjcxMUFGMzFDMzAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTcxMiw2ICs3MTksNyBAQAogCQkJCUJDOUQ5MDI0MEM5NzQ3MkUwMDk5QTRB
MyAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCMjYwQzlCMDE1QzAw
MTE0MzY5IC8qIFdvcmtRdWV1ZUl0ZW1NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTg1RjZC
MjEwNzE0RTA3MDA3QUEzOTMgLyogSGlzdG9yeURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJRTFCNzgxNjUxMUFGMzFCNzAwN0UxQkMyIC8qIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiA2MDQ4MCkKKysrIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDEs
NiArNDEsNyBAQAogI2ltcG9ydCAiSGlzdG9yeURlbGVnYXRlLmgiCiAjaW1wb3J0ICJKYXZhU2Ny
aXB0VGhyZWFkaW5nLmgiCiAjaW1wb3J0ICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgorI2ltcG9y
dCAiTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBvcnQgIk5hdmlnYXRpb25Db250cm9s
bGVyLmgiCiAjaW1wb3J0ICJPYmpDUGx1Z2luLmgiCiAjaW1wb3J0ICJPYmpDUGx1Z2luRnVuY3Rp
b24uaCIKQEAgLTI5MSw2ICsyOTIsNyBAQCBXZWJWaWV3ICpjcmVhdGVXZWJWaWV3QW5kT2Zmc2Ny
ZWVuV2luZG93CiAgICAgW3dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdhdGU6ZnJhbWVMb2FkRGVs
ZWdhdGVdOwogICAgIFt3ZWJWaWV3IHNldEVkaXRpbmdEZWxlZ2F0ZTplZGl0aW5nRGVsZWdhdGVd
OwogICAgIFt3ZWJWaWV3IHNldFJlc291cmNlTG9hZERlbGVnYXRlOnJlc291cmNlTG9hZERlbGVn
YXRlXTsKKyAgICBbd2ViVmlldyBfc2V0R2VvbG9jYXRpb25Qcm92aWRlcjpbTW9ja0dlb2xvY2F0
aW9uUHJvdmlkZXIgc2hhcmVkXV07CiAKICAgICAvLyBSZWdpc3RlciB0aGUgc2FtZSBzY2hlbWVz
IHRoYXQgU2FmYXJpIGRvZXMKICAgICBbV2ViVmlldyByZWdpc3RlclVSTFNjaGVtZUFzTG9jYWw6
QCJmZWVkIl07CkBAIC0xMTgxLDYgKzExODMsOCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdU
b0NvbnNpc3RlbnRTdGF0CiAKICAgICBbV2ViVmlldyBfc2V0VXNlc1Rlc3RNb2RlRm9jdXNSaW5n
Q29sb3I6WUVTXTsKICAgICBbV2ViVmlldyBfcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzXTsK
KworICAgIFtbTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSBzdG9wVGltZXJdOwogfQog
CiBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgdGVzdFBhdGhPclVSTCkKSW5kZXg6
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDYwNDgwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgogCiAjaW1w
b3J0ICJFZGl0aW5nRGVsZWdhdGUuaCIKKyNpbXBvcnQgIk1vY2tHZW9sb2NhdGlvblByb3ZpZGVy
LmgiCiAjaW1wb3J0ICJQb2xpY3lEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV29ya1F1ZXVlLmgiCiAj
aW1wb3J0ICJXb3JrUXVldWVJdGVtLmgiCkBAIC00Nyw3ICs0OCw3IEBACiAjaW1wb3J0IDxXZWJL
aXQvV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkZyYW1l
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWVWaWV3UHJpdmF0ZS5oPgotI2ltcG9ydCA8V2Vi
S2l0L1dlYkdlb2xvY2F0aW9uTW9ja1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJHZW9s
b2NhdGlvblBvc2l0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViSFRNTFZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViSGlzdG9yeS5oPgpAQCAtNTUsNiArNTYsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYklj
b25EYXRhYmFzZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJJbnNwZWN0b3JQcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViTlNVUkxFeHRyYXMuaD4KKyNpbXBvcnQgPFdlYktpdC9X
ZWJLaXRFcnJvcnMuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJQcmVmZXJlbmNlcy5oPgogI2ltcG9y
dCA8V2ViS2l0L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlNj
cmlwdFdvcmxkLmg+CkBAIC0yOTgsMTQgKzMwMCwxNyBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXREb21haW5SZWxhCiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91
YmxlIGFjY3VyYWN5KQogewotICAgIFtXZWJHZW9sb2NhdGlvbk1vY2sgc2V0UG9zaXRpb246bGF0
aXR1ZGU6bG9uZ2l0dWRlOmFjY3VyYWN5XTsKKyAgICBXZWJHZW9sb2NhdGlvblBvc2l0aW9uICpw
b3NpdGlvbiA9IFtbV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiBhbGxvY10gaW5pdFdpdGhUaW1lc3Rh
bXA6MCBsYXRpdHVkZTpsYXRpdHVkZSBsb25naXR1ZGU6bG9uZ2l0dWRlIGFjY3VyYWN5OmFjY3Vy
YWN5XTsKKyAgICBbW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF0gc2V0UG9zaXRpb246
cG9zaXRpb25dOworICAgIFtwb3NpdGlvbiByZWxlYXNlXTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVm
IG1lc3NhZ2UpCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtZXNzYWdlQ0YoQWRvcHRD
RiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbWVzc2FnZSkpOwog
ICAgIE5TU3RyaW5nICptZXNzYWdlTlMgPSAoTlNTdHJpbmcgKiltZXNzYWdlQ0YuZ2V0KCk7Ci0g
ICAgW1dlYkdlb2xvY2F0aW9uTW9jayBzZXRFcnJvcjpjb2RlOm1lc3NhZ2VOU107CisgICAgTlNF
cnJvciAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V2ViS2l0RXJyb3JEb21haW4g
Y29kZTpjb2RlIHVzZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bWVz
c2FnZU5TIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XV07CisgICAgW1tNb2NrR2Vv
bG9jYXRpb25Qcm92aWRlciBzaGFyZWRdIHNldEVycm9yOmVycm9yXTsKIH0KIAogdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZChib29sIGljb25EYXRhYmFz
ZUVuYWJsZWQpCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xv
Y2F0aW9uUHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXJfaAorI2RlZmluZSBN
b2NrR2VvbG9jYXRpb25Qcm92aWRlcl9oCisKKyNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0
ZS5oPgorI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KKworQGludGVyZmFjZSBNb2NrR2VvbG9jYXRp
b25Qcm92aWRlciA6IE5TT2JqZWN0PFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+IHsKKyAgICBXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uICpfbGFzdFBvc2l0aW9uOworICAgIE5TRXJyb3IgKl9lcnJvcjsK
KyAgICBOU1RpbWVyICpfdGltZXI7CisgICAgSGFzaFNldDxXZWJWaWV3ICo+IF9yZWdpc3RlcmVk
Vmlld3M7Cit9CisKKysgKE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyICopc2hhcmVkOworCistICh2
b2lkKXNldFBvc2l0aW9uOihXZWJHZW9sb2NhdGlvblBvc2l0aW9uICopcG9zaXRpb247CistICh2
b2lkKXNldEVycm9yOihOU0Vycm9yICopZXJyb3I7CisKKy0gKHZvaWQpc3RvcFRpbWVyOworCitA
ZW5kCisjZW5kaWYKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrR2Vv
bG9jYXRpb25Qcm92aWRlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0JKHJldmlzaW9uIDApCisrKyBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0JKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgIk1vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmgiCisK
KworQGltcGxlbWVudGF0aW9uIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyCisKKysgKE1vY2tHZW9s
b2NhdGlvblByb3ZpZGVyICopc2hhcmVkCit7CisgICAgc3RhdGljIE1vY2tHZW9sb2NhdGlvblBy
b3ZpZGVyICpwcm92aWRlciA9IFtbTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgYWxsb2NdIGluaXRd
OworICAgIHJldHVybiBwcm92aWRlcjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgQVNT
RVJUKF9yZWdpc3RlcmVkVmlld3MuaXNFbXB0eSgpKTsKKworICAgIFtfbGFzdFBvc2l0aW9uIHJl
bGVhc2VdOworICAgIFtfZXJyb3IgcmVsZWFzZV07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQor
CistICh2b2lkKXNldFBvc2l0aW9uOihXZWJHZW9sb2NhdGlvblBvc2l0aW9uICopcG9zaXRpb24K
K3sKKyAgICBpZiAoX2xhc3RQb3NpdGlvbiAhPSBwb3NpdGlvbikgeworICAgICAgICBbX2xhc3RQ
b3NpdGlvbiByZWxlYXNlXTsKKyAgICAgICAgX2xhc3RQb3NpdGlvbiA9IFtwb3NpdGlvbiByZXRh
aW5dOworICAgIH0KKyAgICAKKyAgICBbX2Vycm9yIHJlbGVhc2VdOworICAgIF9lcnJvciA9IDA7
CisKKyAgICBpZiAoIV90aW1lcikKKyAgICAgICAgX3RpbWVyID0gW05TVGltZXIgc2NoZWR1bGVk
VGltZXJXaXRoVGltZUludGVydmFsOjAgdGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHRp
bWVyRmlyZWQpIHVzZXJJbmZvOjAgcmVwZWF0czpOT107Cit9CisKKy0gKHZvaWQpc2V0RXJyb3I6
KE5TRXJyb3IgKillcnJvcgoreworICAgIGlmIChfZXJyb3IgIT0gZXJyb3IpIHsKKyAgICAgICAg
W19lcnJvciByZWxlYXNlXTsKKyAgICAgICAgX2Vycm9yID0gW2Vycm9yIHJldGFpbl07CisgICAg
fQorICAgIAorICAgIFtfbGFzdFBvc2l0aW9uIHJlbGVhc2VdOworICAgIF9sYXN0UG9zaXRpb24g
PSAwOworCisgICAgaWYgKCFfdGltZXIpCisgICAgICAgIF90aW1lciA9IFtOU1RpbWVyIHNjaGVk
dWxlZFRpbWVyV2l0aFRpbWVJbnRlcnZhbDowIHRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rv
cih0aW1lckZpcmVkKSB1c2VySW5mbzowIHJlcGVhdHM6Tk9dOworfQorCistICh2b2lkKXJlZ2lz
dGVyV2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICBfcmVnaXN0ZXJlZFZpZXdzLmFk
ZCh3ZWJWaWV3KTsKK30KKworLSAodm9pZCl1bnJlZ2lzdGVyV2ViVmlldzooV2ViVmlldyAqKXdl
YlZpZXcKK3sKKyAgICBfcmVnaXN0ZXJlZFZpZXdzLnJlbW92ZSh3ZWJWaWV3KTsKK30KKworLSAo
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqKWxhc3RQb3NpdGlvbgoreworICAgIHJldHVybiBfbGFz
dFBvc2l0aW9uOworfQorCistICh2b2lkKXN0b3BUaW1lcgoreworICAgIFtfdGltZXIgaW52YWxp
ZGF0ZV07CisgICAgX3RpbWVyID0gMDsKK30KKworLSAodm9pZCl0aW1lckZpcmVkCit7CisgICAg
X3RpbWVyID0gMDsKKworICAgIC8vIEV4cGVjdCB0aGF0IHZpZXdzIHdvbid0IGJlICh1bilyZWdp
c3RlcmVkIHdoaWxlIGl0ZXJhdGluZy4KKyAgICBIYXNoU2V0PFdlYlZpZXcqPiB2aWV3cyA9IF9y
ZWdpc3RlcmVkVmlld3M7CisgICAgZm9yIChIYXNoU2V0PFdlYlZpZXcqPjo6aXRlcmF0b3IgaXRl
ciA9IHZpZXdzLmJlZ2luKCk7IGl0ZXIgIT0gdmlld3MuZW5kKCk7ICsraXRlcikgeworICAgICAg
ICBpZiAoX2Vycm9yKQorICAgICAgICAgICAgWyppdGVyIF9nZW9sb2NhdGlvbkRpZEZhaWxXaXRo
RXJyb3I6X2Vycm9yXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgWyppdGVyIF9nZW9sb2Nh
dGlvbkRpZENoYW5nZVBvc2l0aW9uOl9sYXN0UG9zaXRpb25dOworICAgIH0KK30KKworQGVuZApJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHJl
dmlzaW9uIDYwNDgwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdh
dGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NywxMiArMTU3LDExIEBAIC0gKHZvaWQpd2ViVmll
dzooV2ViVmlldyAqKXNlbmRlciBzZXRTdGEKIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
d2ViVmlldyBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOihXZWJT
ZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBmcmFtZTooV2ViRnJhbWUgKilmcmFtZSBsaXN0ZW5lcjoo
aWQ8V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcj4pbGlzdGVuZXIKIHsKLSAgICBpZiAoZ0xh
eW91dFRlc3RDb250cm9sbGVyLT5pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCgpKSB7Ci0gICAg
ICAgIGlmIChnTGF5b3V0VGVzdENvbnRyb2xsZXItPmdlb2xvY2F0aW9uUGVybWlzc2lvbigpKQot
ICAgICAgICAgICAgW2xpc3RlbmVyIGFsbG93XTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
W2xpc3RlbmVyIGRlbnldOwotICAgIH0KKyAgICAvLyBGSVhNRTogSWYgbW9jayBwZXJtaXNzaW9u
IGlzbid0IHNldCB5ZXQsIHdlIHNob3VsZCBzZW5kIHRoZSByZXNwb25zZSBhc3luY2hyb25vdXNs
eS4KKyAgICBpZiAoZ0xheW91dFRlc3RDb250cm9sbGVyLT5pc0dlb2xvY2F0aW9uUGVybWlzc2lv
blNldCgpICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+Z2VvbG9jYXRpb25QZXJtaXNzaW9uKCkp
CisgICAgICAgIFtsaXN0ZW5lciBhbGxvd107CisgICAgZWxzZQorICAgICAgICBbbGlzdGVuZXIg
ZGVueV07CiB9CiAKIC0gKEJPT0wpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBzaG91bGRIYWx0
UGx1Z2luOihET01Ob2RlICopcGx1Z2luTm9kZQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjA0ODApCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAor
MjAxMC0wNS0yOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0MzQKKyAgICAgICAgUkVHUkVTU0lPTiAocjU5ODEx
KTogR2VvbG9jYXRpb24gY2FsbGJhY2tzIGNhbm5vdCBiZSBjcmVhdGVkCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvU2tpcHBlZDogQWxsIHRlc3RzIHVzZWQgdG8gYmUgZGlzYWJsZWQuIE5vdyBv
bmx5IHRob3NlIHRoYXQgZmFsIHdpdGggYW4KKyAgICAgICAgYXNzZXJ0aW9uIGFyZS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOiBVbnNraXBwZWQgdGVzdHMgdGhhdCB3ZSBhZmZl
Y3RlZCBieSB0aGlzIGJ1Zy4KKworICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3Njcmlw
dC10ZXN0cy9lcnJvci5qczogVGhlIHRlc3QgY2hlY2tzIHdoYXQgaGFwcGVucyBpZiByZXNvbHZp
bmcKKyAgICAgICAgcG9zaXRpb24gZmFpbHMuIFNvLCBpdCBoYXMgdG8gZW5hYmxlIHBlcm1pc3Np
b24sIGFuZCBoYXMgdG8gdXNlIGFuIGVycm9yIGNvZGUgdGhhdCBhY3R1YWxseQorICAgICAgICBl
eGlzdHMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4
aW11bS1hZ2UuanM6IEVycm9yIGNvZGUgMSBpcyBwZXJtaXNzaW9uIGRlbmllZCwKKyAgICAgICAg
YnV0IHBlcm1pc3Npb24gaXMgbm90IGRlbmllZCBpbiB0aGlzIHRlc3QuIFVzZSBhbiBlcnJvciBj
b2RlIHRoYXQgYWdyZWVzIHdpdGggcmVhbGl0eS4KKworICAgICAgICAqIGZhc3QvZG9tL0dlb2xv
Y2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5qczogRGl0dG8uCisgICAgICAgIAorICAgICAgICAq
IGZhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9yZWVudHJhbnQtZXJyb3IuanM6IFRo
ZSB0ZXN0IGNoZWNrcyB3aGF0IGhhcHBlbnMgaWYKKyAgICAgICAgcmVzb2x2aW5nIHBvc2l0aW9u
IGZhaWxzLiBTbywgaXQgaGFzIHRvIGVuYWJsZSBwZXJtaXNzaW9uLgorCiAyMDEwLTA2LTAxICBN
YXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBYYW4gTG9wZXouCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9z
Y3JpcHQtdGVzdHMvZXJyb3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2Vycm9yLmpzCShyZXZpc2lvbiA2MDQ4MCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9lcnJvci5qcwkod29y
a2luZyBjb3B5KQpAQCAtMSw4ICsxLDkgQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyBHZW9sb2NhdGlv
biBlcnJvciBjYWxsYmFjayB1c2luZyB0aGUgbW9jayBzZXJ2aWNlLiIpOwogCi12YXIgbW9ja0Nv
ZGUgPSAwOwordmFyIG1vY2tDb2RlID0gMjsKIHZhciBtb2NrTWVzc2FnZSA9ICJkZWJ1ZyI7CiAK
K3dpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1
ZSk7CiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3Io
bW9ja0NvZGUsIG1vY2tNZXNzYWdlKTsKIAogdmFyIGVycm9yOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL21heGltdW0tYWdlLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9tYXhp
bXVtLWFnZS5qcwkocmV2aXNpb24gNjA0ODApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4aW11bS1hZ2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTQs
NyArNCw3IEBAIHZhciBtb2NrTGF0aXR1ZGUgPSA1MS40Nzg7CiB2YXIgbW9ja0xvbmdpdHVkZSA9
IC0wLjE2NjsKIHZhciBtb2NrQWNjdXJhY3kgPSAxMDAuMDsKIAotdmFyIG1vY2tDb2RlID0gMTsK
K3ZhciBtb2NrQ29kZSA9IDI7CiB2YXIgbW9ja01lc3NhZ2UgPSAndGVzdCc7CiAKIHZhciBwb3Np
dGlvbjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0
cy9yZWVudHJhbnQtZXJyb3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3JlZW50cmFudC1lcnJvci5qcwkocmV2aXNpb24gNjA0
ODApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVl
bnRyYW50LWVycm9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zLDYgKzMsNyBAQCBkZXNjcmlwdGlv
bigiVGVzdHMgdGhhdCByZWVudHJhbnQgY2FsbHMgCiB2YXIgbW9ja0NvZGUgPSAwOwogdmFyIG1v
Y2tNZXNzYWdlID0gJ3Rlc3QnOwogCit3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOwogd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLnNl
dE1vY2tHZW9sb2NhdGlvbkVycm9yKG1vY2tDb2RlLCBtb2NrTWVzc2FnZSk7CiAKIHZhciBlcnJv
cjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93
YXRjaC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9z
Y3JpcHQtdGVzdHMvd2F0Y2guanMJKHJldmlzaW9uIDYwNDgwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3dhdGNoLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC00LDcgKzQsNyBAQCB2YXIgbW9ja0xhdGl0dWRlID0gNTEuNDc4OwogdmFyIG1vY2tMb25naXR1
ZGUgPSAtMC4xNjY7CiB2YXIgbW9ja0FjY3VyYWN5ID0gMTAwLjA7CiAKLXZhciBtb2NrQ29kZSA9
IDE7Cit2YXIgbW9ja0NvZGUgPSAyOwogdmFyIG1vY2tNZXNzYWdlID0gJ3Rlc3QnOwogCiB2YXIg
cG9zaXRpb247CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkocmV2aXNpb24gNjA0ODAp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAt
NTkzMiw5ICs1OTMyLDMgQEAgZWRpdGluZy9zcGVsbGluZy9jb250ZXh0LW1lbnUtc3VnZ2VzdGlv
bgogCiAjIEluZGV4ZWREQiBpcyBub3QgeWV0IGVuYWJsZWQuCiBzdG9yYWdlL2luZGV4ZWRkYgot
Ci0jIFRoZXNlIHRlc3RzIGFyZSBmYWlsaW5nIGJlY2F1c2Ugb2YgRE9NIHByb2JsZW1zIGFyb3Vu
ZCBnZXRDdXJyZW50UG9zaXRpb24KLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM5NDU0Ci1mYXN0L2RvbS9HZW9sb2NhdGlvbi9hcmd1bWVudC10eXBlcy5odG1sCi1m
YXN0L2RvbS9HZW9sb2NhdGlvbi9ub3RpbWVyLWFmdGVyLXVubG9hZC5odG1sCi1mYXN0L2RvbS9H
ZW9sb2NhdGlvbi90aW1lb3V0LXplcm8uaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBw
ZWQJKHJldmlzaW9uIDYwNDgwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJ
KHdvcmtpbmcgY29weSkKQEAgLTY3LDkgKzY3LDYgQEAgaHR0cC90ZXN0cy9tZWRpYS92aWRlby1l
cnJvci1hYm9ydC5odG1sCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNzAzNgogaHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXN1c3BlbmQuaHRtbAogCi0jIFRo
aXMgcG9ydCBkb2Vzbid0IHN1cHBvcnQgR2VvbG9jYXRpb24uCi1mYXN0L2RvbS9HZW9sb2NhdGlv
bgotCiAjIFRoaXMgcG9ydCBkb2Vzbid0IHN1cHBvcnQgTm90aWZpY2F0aW9ucy4KIGZhc3Qvbm90
aWZpY2F0aW9ucwogCkBAIC0zMDEsMyArMjk4LDggQEAgc3RvcmFnZS9pbmRleGVkZGIKICMgVGhp
cyBwb3J0IGRvZXNuJ3Qgc3VwcG9ydCBEZXZpY2VPcmllbnRhdGlvbi4KIGZhc3QvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtb24tZGV2aWNl
LW9yaWVudGF0aW9uLmh0bWwKKworIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mzk5MDgKK2Zhc3QvZG9tL0dlb2xvY2F0aW9uL21heGltdW0tYWdlLmh0bWwKK2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3JlZW50cmFudC1lcnJvci5odG1sCitmYXN0L2RvbS9HZW9sb2NhdGlv
bi9yZWVudHJhbnQtc3VjY2Vzcy5odG1sCg==
</data>
<flag name="review"
          id="42178"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>