<?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>60034</bug_id>
          
          <creation_ts>2011-05-03 09:51:48 -0700</creation_ts>
          <short_desc>Implement LayoutTestController::pseudoShadowId()</short_desc>
          <delta_ts>2011-05-06 00:29:13 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>28220</blocked>
    
    <blocked>59661</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aroben</cc>
    
    <cc>buildbot</cc>
    
    <cc>dominicc</cc>
    
    <cc>eric</cc>
    
    <cc>fischman</cc>
    
    <cc>rolandsteiner</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>397139</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-05-03 09:51:48 -0700</bug_when>
    <thetext>+++ This bug was initially created as a clone of Bug #58584 +++

Authors should be able to read and write the shadowPseudoId property on an element.

A new LayoutTestController method is needed so test authors can get the shadowPseudoId of a given Node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397971</commentid>
    <comment_count>1</comment_count>
      <attachid>92258</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-05-04 09:34:38 -0700</bug_when>
    <thetext>Created attachment 92258
proposed patch

I tested this on GTK, chromium-linux, qt-linux and mac. Not on windows
though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397973</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-04 09:35:23 -0700</bug_when>
    <thetext>Attachment 92258 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/medi...&quot; exit_code: 1

Tools/DumpRenderTree/LayoutTestController.h:78:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 28 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>397977</commentid>
    <comment_count>3</comment_count>
      <attachid>92259</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-05-04 09:38:08 -0700</bug_when>
    <thetext>Created attachment 92259
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397982</commentid>
    <comment_count>4</comment_count>
      <attachid>92259</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-04 09:40:41 -0700</bug_when>
    <thetext>Comment on attachment 92259
proposed patch

This looks great! I think you&apos;re still missing changes to WebKitRunner for WebKit2?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397989</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-05-04 09:44:40 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 92259 [details])
&gt; This looks great! I think you&apos;re still missing changes to WebKitRunner for WebKit2?

Oh, true! I didn&apos;t know about that. New LayoutTestControllers to patch indeed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397992</commentid>
    <comment_count>6</comment_count>
      <attachid>92259</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-05-04 09:49:08 -0700</bug_when>
    <thetext>Comment on attachment 92259
proposed patch

Incomplete patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398026</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-05-04 10:13:54 -0700</bug_when>
    <thetext>Attachment 92259 did not build on win:
Build output: http://queues.webkit.org/results/8558556</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398595</commentid>
    <comment_count>8</comment_count>
      <attachid>92384</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-05-05 00:48:08 -0700</bug_when>
    <thetext>Created attachment 92384
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398610</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-05-05 01:27:17 -0700</bug_when>
    <thetext>Attachment 92384 did not build on win:
Build output: http://queues.webkit.org/results/8557859</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398627</commentid>
    <comment_count>10</comment_count>
      <attachid>92389</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-05-05 02:03:14 -0700</bug_when>
    <thetext>Created attachment 92389
proposed patch

Trying to make win EWS happy about this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398637</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-05-05 02:28:38 -0700</bug_when>
    <thetext>Attachment 92389 did not build on win:
Build output: http://queues.webkit.org/results/8554845</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398639</commentid>
    <comment_count>12</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-05-05 02:47:23 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Attachment 92389 [details] did not build on win:
&gt; Build output: http://queues.webkit.org/results/8554845

Adam, would you mind checking my patch? It doesn&apos;t build on windows although I registered the new shadowPseudoId method in the IDOMElementPrivate interface...

Not sure what to do about this and I don&apos;t have a windows box.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398640</commentid>
    <comment_count>13</comment_count>
      <attachid>92397</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-05-05 03:02:07 -0700</bug_when>
    <thetext>Created attachment 92397
proposed patch

Touched Source/WebKit/win/Interfaces/WebKit.idl
in the secret hope this will trigger a magic rebuild in win EWS and
turn the bubble to green!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398655</commentid>
    <comment_count>14</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-05-05 03:54:26 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=92397) [details]
&gt; proposed patch
&gt; 
&gt; Touched Source/WebKit/win/Interfaces/WebKit.idl
&gt; in the secret hope this will trigger a magic rebuild in win EWS and
&gt; turn the bubble to green!

Sweet this worked \o/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398769</commentid>
    <comment_count>15</comment_count>
      <attachid>92397</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-05-05 09:15:18 -0700</bug_when>
    <thetext>Comment on attachment 92397
proposed patch

ok. Even though I am embarking on the journey to move these methods to window.internals, I am not going to block your progress on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399379</commentid>
    <comment_count>16</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-05-06 00:29:13 -0700</bug_when>
    <thetext>Committed r85925: &lt;http://trac.webkit.org/changeset/85925&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92258</attachid>
            <date>2011-05-04 09:34:38 -0700</date>
            <delta_ts>2011-05-04 09:38:08 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>25096</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBhMDJiZDMwN2ZjODhkYWM5YmI2OTVmYTExOWJhNDMyMWU4ZjVmMTRiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDMgTWF5IDIwMTEgMjA6MDI6MzEgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
cm9wb3NlZCBwYXRjaAoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTAgKysrKysrCiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250
cm9scy10cmFuc2Zvcm1lZC5odG1sICB8ICAgMTQgKysrKysrLS0tCiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICB8ICAgMTEgKysrKysrKwogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRWxlbWVudC5oICAgICAgICAgfCAgICAxICsKIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkVsZW1lbnQuY3BwICAgICAgICAgIHwgICAgNSAr
KysKIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAxMSArKysrKysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmNwcCAgICB8ICAgMTAgKysrKysrCiAuLi4vZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0ay5oICB8ICAgIDEgKwogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDExICsrKysrKysKIFNvdXJjZS9XZWJLaXQvbWFjL0RP
TS9XZWJET01PcGVyYXRpb25zLm1tICAgICAgICAgIHwgICAgNSArKysKIFNvdXJjZS9XZWJLaXQv
bWFjL0RPTS9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5oICAgIHwgICAgMSArCiBTb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKysrKysrKwog
Li4uL3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcCAgfCAgICA5
ICsrKysrKwogLi4uL3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmgg
ICAgfCAgICAxICsKIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxMSArKysrKysrCiBTb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5j
cHAgICAgICAgICAgICAgICB8ICAgMTIgKysrKysrKysKIFNvdXJjZS9XZWJLaXQvd2luL0RPTUNv
cmVDbGFzc2VzLmggICAgICAgICAgICAgICAgIHwgICAgMyArKwogVG9vbHMvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMwICsrKysrKysrKysrKysrKysr
KysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgICAgICB8
ICAgMTEgKysrKysrKwogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aCAgICAgICAgfCAgICAxICsKIC4uLi9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAg
ICAgICAgICAgICAgIHwgICAxMCArKysrKysKIC4uLi9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oIHwgICAgMSArCiAuLi4vRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCB8ICAgMTAgKysrKysrCiAuLi4vRHVtcFJlbmRlclRy
ZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tICB8ICAgMTAgKysrKysrCiBUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCB8ICAgIDUgKysrCiBU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmggICB8ICAgIDEg
KwogLi4uL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgfCAg
IDE5ICsrKysrKysrKysrKwogVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRy
b2xsZXJXeC5jcHAgfCAgICA1ICsrKwogMjggZmlsZXMgY2hhbmdlZCwgMjI1IGluc2VydGlvbnMo
KyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ0OTI5ZjcuLmZlYzg2MzEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMS0wNS0wNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjpwc2V1ZG9TaGFkb3dJZCgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAzNAorCisgICAgICAg
ICogbWVkaWEvdmlkZW8tY29udHJvbHMtdHJhbnNmb3JtZWQuaHRtbDogUmVmYWN0b3JlZCB0byB1
c2UgdGhlCisgICAgICAgIHBzZXVkb1NoYWRvd0lkKCkgTGF5b3V0VGVzdENvbnRyb2xsZXIgbWV0
aG9kLgorCiAyMDExLTA1LTA0ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXRyYW5zZm9ybWVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1jb250cm9scy10cmFuc2Zvcm1lZC5odG1sCmluZGV4IDE2ZWVlOGEu
LjAyMGNlMGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXRy
YW5zZm9ybWVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtdHJh
bnNmb3JtZWQuaHRtbApAQCAtMTksMTEgKzE5LDE1IEBACiAgICAgICAgIHdhaXRGb3JFdmVudCgn
Y2FucGxheXRocm91Z2gnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgLy8gRmluZCB0aGUgcGxheSBidXR0b24gYW5k
IGNsaWNrIHRoZSBtaWRkbGUgb2YgaXRzIGJvdW5kaW5nIGJveC4KLSAgICAgICAgICAgICAgICAv
LyBUaGlzIGFwcHJvYWNoIGhhcmQtY29kZXMgdGhlIGNvbnN0cnVjdGlvbiBvcmRlciBvZiB0aGUg
bWVkaWEKLSAgICAgICAgICAgICAgICAvLyBjb250cm9scywgd2hpY2ggaXMgdWdseSwgYnV0IHNh
ZGx5IGlzIGFsc28gY3VycmVudGx5IHRoZSBvbmx5Ci0gICAgICAgICAgICAgICAgLy8gd2F5IHRv
IGRvIGl0LgotICAgICAgICAgICAgICAgIC8vIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU4NTg0IGlzIHRyYWNraW5nIGZpeGluZyB0aGF0LgotICAgICAgICAgICAgICAg
IHZhciBwbGF5QnV0dG9uID0gbGF5b3V0VGVzdENvbnRyb2xsZXIuc2hhZG93Um9vdCh2aWRlbyku
Zmlyc3RDaGlsZC5maXJzdENoaWxkLmNoaWxkcmVuWzFdOworICAgICAgICAgICAgICAgIHZhciBw
bGF5QnV0dG9uOworICAgICAgICAgICAgICAgIHZhciBjb250cm9sc1NoYWRvdyA9IGxheW91dFRl
c3RDb250cm9sbGVyLnNoYWRvd1Jvb3QodmlkZW8pLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZDsKKyAg
ICAgICAgICAgICAgICBmb3IgKGNoaWxkID0gY29udHJvbHNTaGFkb3cuZmlyc3RDaGlsZDsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQubmV4dFNpYmxpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgIGlm
IChsYXlvdXRUZXN0Q29udHJvbGxlci5zaGFkb3dQc2V1ZG9JZChjaGlsZCkgPT0gIi13ZWJraXQt
bWVkaWEtY29udHJvbHMtcGxheS1idXR0b24iKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
cGxheUJ1dHRvbiA9IGNoaWxkOworICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAg
IGlmICghcGxheUJ1dHRvbikgewogICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiRmFpbGVk
IHRvIGZpbmQgcGxheS9wYXVzZSBidXR0b24uIik7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAzMGU0ZTM2Li4zMWZiOTU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA1LTA0ICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBzZXVkb1No
YWRvd0lkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYwMDM0CisKKyAgICAgICAgKiBwdWJsaWMvV2ViRWxlbWVudC5oOgorICAgICAgICAqIHNyYy9X
ZWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWxlbWVudDo6c2hhZG93UHNldWRv
SWQpOgorCiAyMDExLTA1LTAzICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFbGVtZW50LmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJFbGVtZW50LmgKaW5kZXggNTNiNmFhMy4uMDI0ZGI2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkVsZW1lbnQuaApAQCAtNjIsNiArNjIsNyBA
QCBjbGFzcyBXZWJOYW1lZE5vZGVNYXA7CiAgICAgICAgIFdFQktJVF9BUEkgV2ViTm9kZSBzaGFk
b3dSb290KCk7CiAgICAgICAgIFdFQktJVF9BUEkgV2ViTm9kZSBlbnN1cmVTaGFkb3dSb290KCk7
CiAgICAgICAgIFdFQktJVF9BUEkgdm9pZCByZW1vdmVTaGFkb3dSb290KCk7CisgICAgICAgIFdF
QktJVF9BUEkgV2ViU3RyaW5nIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAKICAgICAgICAgLy8g
UmV0dXJucyB0aGUgbGFuZ3VhZ2UgY29kZSBzcGVjaWZpZWQgZm9yIHRoaXMgZWxlbWVudC4gIFRo
aXMgYXR0cmlidXRlCiAgICAgICAgIC8vIGlzIGluaGVyaXRlZCwgc28gdGhlIHJldHVybmVkIHZh
bHVlIGlzIGRyYXduIGZyb20gdGhlIGNsb3Nlc3QgcGFyZW50CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkVsZW1lbnQuY3BwCmluZGV4IDM2MWJmZWUuLjdlODUxYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkVsZW1lbnQuY3BwCkBAIC0xMDYsNiArMTA2LDExIEBAIHZv
aWQgV2ViRWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdCgpCiAgICAgdW53cmFwPEVsZW1lbnQ+KCkt
PnJlbW92ZVNoYWRvd1Jvb3QoKTsKIH0KIAorV2ViU3RyaW5nIFdlYkVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViU3RyaW5nKGNvbnN0VW53cmFwPEVsZW1l
bnQ+KCktPnNoYWRvd1BzZXVkb0lkKCkuc3RyaW5nKCkpOworfQorCiBXZWJTdHJpbmcgV2ViRWxl
bWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkgY29uc3QKIHsKICAgICByZXR1cm4gV2Vi
U3RyaW5nKGNvbnN0VW53cmFwPEVsZW1lbnQ+KCktPmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwppbmRleCBjY2UyMzkwLi42NTA4ZWM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDUtMDQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cHNldWRvU2hhZG93SWQoKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAwMzQKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNoYWRvd1BzZXVkb0lkKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoKKwogMjAxMS0w
NS0wMyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAY29kZWF1cm9yYS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5j
cHAKaW5kZXggMjkwM2NlZS4uNTMwZGY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBA
IC00MTYsNiArNDE2LDE2IEBAIENTdHJpbmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjptYXJr
ZXJUZXh0Rm9yTGlzdEl0ZW0oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBKCiAgICAgcmV0dXJuIFdl
YkNvcmU6Om1hcmtlclRleHRGb3JMaXN0SXRlbShlbGVtZW50KS51dGY4KCk7CiB9CiAKK0NTdHJp
bmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzaGFkb3dQc2V1ZG9JZChKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KQoreworICAgIEpTQzo6RXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjb250ZXh0KTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KHRv
SlMoZXhlYywgbm9kZU9iamVjdCkpOworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJu
IENTdHJpbmcoKTsKKworICAgIHJldHVybiBlbGVtZW50LT5zaGFkb3dQc2V1ZG9JZCgpLnN0cmlu
ZygpLnV0ZjgoKTsKK30KKwogdW5zaWduZWQgaW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6
bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCmluZGV4
IGQ3ZDcxN2MuLjMzOGJiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCkBAIC04MSw2ICs4MSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwYXVzZVRyYW5zaXRpb24oV2ViS2l0V2ViRnJh
bWUqLCBjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3QgY2hhciogZWxlbWVudCk7
CiAgICAgc3RhdGljIGJvb2wgcGF1c2VTVkdBbmltYXRpb24oV2ViS2l0V2ViRnJhbWUqLCBjb25z
dCBjaGFyKiBhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IGNoYXIqIGVsZW1lbnRJZCk7
CiAgICAgc3RhdGljIFdURjo6Q1N0cmluZyBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oV2ViS2l0V2Vi
RnJhbWUqLCBKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCk7CisgICAgc3RhdGlj
IFdURjo6Q1N0cmluZyBzaGFkb3dQc2V1ZG9JZChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgbm9k
ZU9iamVjdCk7CiAgICAgc3RhdGljIHVuc2lnbmVkIGludCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlv
bnMoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhX
ZWJLaXRXZWJGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoV2ViS2l0
V2ViRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA2ZTU2YmRmLi4yYjhlZDY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDUtMDQgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cHNldWRvU2hh
ZG93SWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjAwMzQKKworICAgICAgICAqIERPTS9XZWJET01PcGVyYXRpb25zLm1tOgorICAgICAgICAoLVtE
T01FbGVtZW50IF9zaGFkb3dQc2V1ZG9JZF0pOgorICAgICAgICAqIERPTS9XZWJET01PcGVyYXRp
b25zUHJpdmF0ZS5oOgorCiAyMDExLTA1LTAzICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFp
eEBjb2RlYXVyb3JhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3Yu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9ucy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRpb25zLm1tCmluZGV4IGY1ZDNjYWIu
LjJlOGVlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRp
b25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRpb25zLm1tCkBA
IC03NSw2ICs3NSwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogICAgIHJldHVybiBXZWJDb3Jl
OjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oY29yZShzZWxmKSk7CiB9CiAKKy0gKE5TU3RyaW5nICop
X3NoYWRvd1BzZXVkb0lkCit7CisgICAgcmV0dXJuIGNvcmUoc2VsZiktPnNoYWRvd1BzZXVkb0lk
KCk7Cit9CisKIC0gKEpTVmFsdWVSZWYpX3NoYWRvd1Jvb3Q6KEpTQ29udGV4dFJlZiljb250ZXh0
CiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnNQcml2YXRlLmgKaW5kZXggYjM1YWYxZC4u
ZjA0MTk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlv
bnNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnNQ
cml2YXRlLmgKQEAgLTM1LDYgKzM1LDcgQEAKIC0gKEpTVmFsdWVSZWYpX3NoYWRvd1Jvb3Q6KEpT
Q29udGV4dFJlZiljb250ZXh0OwogLSAoSlNWYWx1ZVJlZilfZW5zdXJlU2hhZG93Um9vdDooSlND
b250ZXh0UmVmKWNvbnRleHQ7CiAtICh2b2lkKV9yZW1vdmVTaGFkb3dSb290OworLSAoTlNTdHJp
bmcgKilfc2hhZG93UHNldWRvSWQ7CiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKFdl
YkRPTURvY3VtZW50T3BlcmF0aW9uc1ByaXZhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDE5MzNlYTMu
LmYyOGQ3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDUtMDQgIFBo
aWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6cHNldWRvU2hhZG93SWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjAwMzQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpz
aGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQuaDoKKwogMjAxMS0wNS0wMyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhA
Y29kZWF1cm9yYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmNwcAppbmRleCA5ZmE0MzI0Li5lNjA2MWIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0LmNwcApAQCAtMTEwOSw2ICsxMTA5LDE1IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OnJlbW92ZVNoYWRvd1Jvb3QoY29uc3QgUVdlYkVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
d2ViRWxlbWVudC0+cmVtb3ZlU2hhZG93Um9vdCgpOwogfQogCitRU3RyaW5nIER1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0OjpzaGFkb3dQc2V1ZG9JZChjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCkK
K3sKKyAgICBXZWJDb3JlOjpFbGVtZW50KiB3ZWJFbGVtZW50ID0gZWxlbWVudC5tX2VsZW1lbnQ7
CisgICAgUVN0cmluZyBwc2V1ZG9JZDsKKyAgICBpZiAod2ViRWxlbWVudCkKKyAgICAgICAgcHNl
dWRvSWQgPSB3ZWJFbGVtZW50LT5zaGFkb3dQc2V1ZG9JZCgpLnN0cmluZygpOworICAgIHJldHVy
biBwc2V1ZG9JZDsKK30KKwogLy8gUHJvdmlkZSBhIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0
aCBwcmV2aW91c2x5IGV4cG9ydGVkIHByaXZhdGUgc3ltYm9scyBhcyBvZiBRdFdlYktpdCA0LjYg
cmVsZWFzZQogCiB2b2lkIFFXRUJLSVRfRVhQT1JUIHF0X3Jlc3VtZUFjdGl2ZURPTU9iamVjdHMo
UVdlYkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAppbmRleCBkNDBlMDk2Li5jMDI3ZDJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oCkBAIC0yMDUsNiArMjA1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBRVmFyaWFudCBzaGFkb3dSb290KGNvbnN0IFFXZWJFbGVtZW50Jik7CiAgICAgc3RhdGlj
IFFWYXJpYW50IGVuc3VyZVNoYWRvd1Jvb3QoY29uc3QgUVdlYkVsZW1lbnQmKTsKICAgICBzdGF0
aWMgdm9pZCByZW1vdmVTaGFkb3dSb290KGNvbnN0IFFXZWJFbGVtZW50Jik7CisgICAgc3RhdGlj
IFFTdHJpbmcgc2hhZG93UHNldWRvSWQoY29uc3QgUVdlYkVsZW1lbnQmKTsKIH07CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCmluZGV4IDA5M2RlNGEuLjQ0NTI0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMS0wNS0wNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5k
QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjpwc2V1ZG9TaGFkb3dJZCgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAzNAorCisg
ICAgICAgICogRE9NQ29yZUNsYXNzZXMuY3BwOgorICAgICAgICAoRE9NRWxlbWVudDo6c2hhZG93
UHNldWRvSWQpOgorICAgICAgICAqIERPTUNvcmVDbGFzc2VzLmg6CisKIDIwMTEtMDUtMDIgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBSb2Jlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAppbmRleCA3MTM3NDQ5Li5j
NzY2YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCkBAIC0xMTYwLDYgKzEx
NjAsMTggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjptYXJrZXJUZXh0
Rm9yTGlzdEl0ZW0oCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NRWxlbWVudDo6c2hhZG93UHNldWRvSWQoCisgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCU1RSKiByZXN1bHQpCit7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BP
SU5URVI7CisKKyAgICBBU1NFUlQobV9lbGVtZW50KTsKKworICAgICpyZXN1bHQgPSBCU3RyaW5n
KG1fZWxlbWVudC0+c2hhZG93UHNldWRvSWQoKS5zdHJpbmcoKSkucmVsZWFzZSgpOworICAgIHJl
dHVybiBTX09LOworfQorCiAvLyBJRE9NRWxlbWVudENTU0lubGluZVN0eWxlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6c3R5bGUoIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vRE9NQ29yZUNsYXNzZXMuaCBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2Vz
LmgKaW5kZXggYzUyZDkzMy4uNWRjYjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
RE9NQ29yZUNsYXNzZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5o
CkBAIC03NzksNiArNzc5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oCiAgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQlNUUiogbWFya2VyVGV4dCk7CiAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2hhZG93UHNldWRvSWQoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNU
UiogcmVzdWx0KTsKKwogICAgIC8vIElET01FbGVtZW50Q1NTSW5saW5lU3R5bGUKICAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3R5bGUoCiAgICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSURPTUNTU1N0eWxlRGVjbGFyYXRpb24qKiByZXN1bHQpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJmYmM3MGEuLjhhNzI0ZTIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxMS0wNS0wNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjpwc2V1ZG9TaGFkb3dJZCgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAzNAorCisgICAgICAg
IHNoYWRvd1BzZXVkb0lkIHN1cHBvcnQgaW4gdGhlIHZhcmlvdXMgTGF5b3V0VGVzdENvbnRyb2xs
ZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2hhZG93UHNldWRvSWRDYWxsYmFj
ayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hh
ZG93UHNldWRvSWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250
cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNoYWRvd1BzZXVk
b0lkKToKKwogMjAxMS0wNS0wNCAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDRjYTkwZDguLjY5YTRjODEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTIw
ODYsNiArMjA4NiwxNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTZXJpYWxpemVIVFRQTG9hZHND
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZQogICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2hhZG93
UHNldWRvSWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgSlNPYmplY3RSZWYsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50
Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExh
eW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBjb250cm9sbGVyLT5zaGFkb3dQ
c2V1ZG9JZChjb250ZXh0LCBhcmd1bWVudHNbMF0pLmdldCgpKTsKK30KKwogLy8gU3RhdGljIFZh
bHVlcwogCiBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRHbG9iYWxGbGFnQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtMjMzMCw2ICsyMzQwLDcgQEAgSlNTdGF0
aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAg
ICAgIHsgImRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbiIsIGRlbGV0ZUxvY2FsU3RvcmFnZUZv
ck9yaWdpbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm9yaWdpbnNXaXRoTG9jYWxTdG9y
YWdlIiwgb3JpZ2luc1dpdGhMb2NhbFN0b3JhZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJzZXRTaG91bGRQYWludEJyb2tlbkltYWdlIiwgc2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNoYWRvd1BzZXVkb0lkIiwgc2hhZG93UHNldWRv
SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IGEzMWU5MDguLmEx
M2ZhODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApA
QCAtNzUsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJ
ZChKU1N0cmluZ1JlZiBpZCwgZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsIGZsb2F0IHBhZ2VIZWln
aHRJblBpeGVscyk7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBhZ2VQcm9wZXJ0eShj
b25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKSBjb25zdDsKICAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VO
dW1iZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IG1hcmdpblRvcCwgaW50IG1hcmdpblJp
Z2h0LCBpbnQgbWFyZ2luQm90dG9tLCBpbnQgbWFyZ2luTGVmdCkgY29uc3Q7CisgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IHNoYWRvd1BzZXVkb0lkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U1ZhbHVlUmVmIG5vZGUpIGNvbnN0OwogICAgIGJvb2wgaXNQYWdlQm94VmlzaWJsZShpbnQgcGFn
ZU51bWJlcikgY29uc3Q7CiAgICAgSlNTdHJpbmdSZWYgcGF0aFRvTG9jYWxSZXNvdXJjZShKU0Nv
bnRleHRSZWYsIEpTU3RyaW5nUmVmIHVybCk7CiAgICAgdm9pZCBxdWV1ZUJhY2tOYXZpZ2F0aW9u
KGludCBob3dGYXJCYWNrd2FyZCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZWU4ZDVhYy4uNjQ1MGFlNyAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcApAQCAtMTc2LDYgKzE3Niw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpM
YXlvdXRUZXN0Q29udHJvbGxlcihUZXN0U2hlbGwqIHNoZWxsKQogICAgIGJpbmRNZXRob2QoInNl
dFhTU0F1ZGl0b3JFbmFibGVkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRYU1NBdWRpdG9y
RW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKTsKICAgICBiaW5kTWV0aG9kKCJzaGFkb3dSb290IiwgJkxheW91dFRlc3RDb250
cm9sbGVyOjpzaGFkb3dSb290KTsKKyAgICBiaW5kTWV0aG9kKCJzaGFkb3dQc2V1ZG9JZCIsICZM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2hhZG93UHNldWRvSWQpOwogICAgIGJpbmRNZXRob2QoInNo
b3dXZWJJbnNwZWN0b3IiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0b3Ip
OwogICAgIGJpbmRNZXRob2QoInNpbXVsYXRlRGVza3RvcE5vdGlmaWNhdGlvbkNsaWNrIiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjpzaW11bGF0ZURlc2t0b3BOb3RpZmljYXRpb25DbGljayk7CiAg
ICAgYmluZE1ldGhvZCgic3VzcGVuZEFuaW1hdGlvbnMiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnN1c3BlbmRBbmltYXRpb25zKTsKQEAgLTcxMCw2ICs3MTEsMTUgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cmVtb3ZlU2hhZG93Um9vdChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3AKICAgICBlbGVtZW50LnJlbW92ZVNoYWRvd1Jvb3QoKTsKIH0KIAordm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2hhZG93UHNldWRvSWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBXZWJFbGVtZW50IGVsZW1lbnQ7
CisgICAgaWYgKCFXZWJCaW5kaW5nczo6Z2V0RWxlbWVudChhcmd1bWVudHNbMF0udmFsdWUub2Jq
ZWN0VmFsdWUsICZlbGVtZW50KSkKKyAgICAgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgZWxz
ZQorICAgICAgICByZXN1bHQtPnNldChlbGVtZW50LnNoYWRvd1BzZXVkb0lkKCkudXRmOCgpKTsK
K30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hvd1dlYkluc3BlY3Rvcihjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgbV9zaGVsbC0+c2hv
d0RldlRvb2xzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA0NGFjMmNkLi4zM2NmYWFjIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAg
LTI3NCw2ICsyNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaGFkb3dSb290KGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGVuc3VyZVNoYWRvd1Jvb3QoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgcmVtb3ZlU2hhZG93
Um9vdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBzaGFk
b3dQc2V1ZG9JZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICAv
LyBUaGUgZmFsbGJhY2sgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGEgbm9uZXhpc3RlbnQgbWV0aG9k
IGlzIGNhbGxlZCBvbgogICAgIC8vIHRoZSBsYXlvdXQgdGVzdCBjb250cm9sbGVyIG9iamVjdC4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxl
ckd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJH
dGsuY3BwCmluZGV4IDYxN2EwOGYuLjJhNDM5N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtOTA1LDYgKzkwNSwx
NiBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtl
clRleHRGb3JMaXN0SXRlbShKU0NvbnRleHRSZQogICAgIHJldHVybiBtYXJrZXJUZXh0OwogfQog
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNoYWRvd1Bz
ZXVkb0lkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QpIGNvbnN0
Cit7CisgICAgQ1N0cmluZyBpZCA9IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2hhZG93UHNl
dWRvSWQoY29udGV4dCwgbm9kZU9iamVjdCk7CisgICAgaWYgKGlkLmlzTnVsbCgpKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiByZXN1bHQoQWRvcHQs
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGlkLmRhdGEoKSkpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmF1dGhlbnRpY2F0ZVNlc3Np
b24oSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmLCBKU1N0cmluZ1JlZikKIHsKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRl
eCBlODVhNzdjLi5mNGU5NDgwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
TGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0yNzksNiArMjc5LDE2IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2VyVGV4dEZvckxpc3RJ
dGVtKEpTQ29udGV4dFJlCiAgICAgcmV0dXJuIG1hcmtlclRleHQ7CiB9CiAKK0pTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hhZG93UHNldWRvSWQoSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCkgY29uc3QKK3sKKyAgICBET01F
bGVtZW50ICplbGVtZW50ID0gW0RPTUVsZW1lbnQgX0RPTUVsZW1lbnRGcm9tSlNDb250ZXh0OmNv
bnRleHQgdmFsdWU6bm9kZU9iamVjdF07CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1
cm4gSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KCk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gc2hhZG93SWQoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmlu
Z1JlZilbZWxlbWVudCBfc2hhZG93UHNldWRvSWRdKSk7CisgICAgcmV0dXJuIHNoYWRvd0lkOwor
fQorCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChK
U1N0cmluZ1JlZiBpZCwgZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsIGZsb2F0IHBhZ2VIZWlnaHRJ
blBpeGVscykKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGlkQ0YoQWRvcHRDRiwgSlNT
dHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgaWQpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKaW5kZXggNzA3
YjNhMy4uOWM5YjNiZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5jcHAKQEAgLTc5OSw2ICs3OTksMTEgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cmVtb3ZlU2hhZG93Um9vdChjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCkK
ICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVtb3ZlU2hhZG93Um9vdChlbGVtZW50KTsK
IH0KIAorUVN0cmluZyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hhZG93UHNldWRvSWQoY29uc3Qg
UVdlYkVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpzaGFkb3dQc2V1ZG9JZChlbGVtZW50KTsKK30KKwogaW50IExheW91dFRlc3RDb250cm9s
bGVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cygpCiB7CiAg
ICAgaW50IHBlbmRpbmdQZXJtaXNzaW9uQ291bnQgPSAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4IGU0NDA0OGYuLmM2NjY1MGIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmgKQEAgLTI1Myw2ICsyNTMsNyBAQCBwdWJsaWMgc2xvdHM6CiAgICAgUVZhcmlhbnQgc2hhZG93
Um9vdChjb25zdCBRV2ViRWxlbWVudCYpOwogICAgIFFWYXJpYW50IGVuc3VyZVNoYWRvd1Jvb3Qo
Y29uc3QgUVdlYkVsZW1lbnQmKTsKICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoY29uc3QgUVdl
YkVsZW1lbnQmKTsKKyAgICBRU3RyaW5nIHNoYWRvd1BzZXVkb0lkKGNvbnN0IFFXZWJFbGVtZW50
Jik7CiAKICAgICB2b2lkIGV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKGludCB3b3JsZElE
LCBjb25zdCBRU3RyaW5nJiBzY3JpcHQpOwogICAgIGJvb2wgaXNQYWdlQm94VmlzaWJsZShpbnQg
cGFnZUluZGV4KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVz
dENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IGFlM2NkOTcuLmRmMDYzMDEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAt
MjI3LDYgKzIyNywyNSBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRy
b2xsZXI6Om1hcmtlclRleHRGb3JMaXN0SXRlbShKU0NvbnRleHRSZQogICAgIHJldHVybiBtYXJr
ZXJUZXh0OwogfQogCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNoYWRvd1BzZXVkb0lkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVP
YmplY3QpIGNvbnN0Cit7CisgICAgQ09NUHRyPElET01FbGVtZW50PiBlbGVtZW50OworICAgIGlm
IChGQUlMRUQod2ViVmlld1ByaXZhdGUtPmVsZW1lbnRGcm9tSlMoY29udGV4dCwgbm9kZU9iamVj
dCwgJmVsZW1lbnQpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBDT01QdHI8SURPTUVsZW1l
bnRQcml2YXRlPiBlbGVtZW50UHJpdmF0ZShRdWVyeSwgZWxlbWVudCk7CisgICAgaWYgKCFlbGVt
ZW50UHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBCU1RSIGlkQlNUUiA9IDA7Cisg
ICAgaWYgKEZBSUxFRChlbGVtZW50UHJpdmF0ZS0+c2hhZG93UHNldWRvSWQoJmlkQlNUUikpKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBpZChBZG9w
dCwgSlNTdHJpbmdDcmVhdGVXaXRoQlNUUihpZEJTVFIpKTsKKyAgICBTeXNGcmVlU3RyaW5nKGlk
QlNUUik7CisgICAgcmV0dXJuIGlkOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjp3
YWl0Rm9yUG9saWN5RGVsZWdhdGUoKQogewogICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVy
V3guY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5j
cHAKaW5kZXggMWFkMzU5ZS4uMThlZjE1MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKQEAgLTUwOCw2ICs1MDgsMTEgQEAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJUZXh0Rm9y
TGlzdEl0ZW0oSlNDb250ZXh0UmUKICAgICByZXR1cm4gMDsKIH0KIAorSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZChKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KSBjb25zdAoreworICAgIHJldHVybiAw
OworfQorCiBKU1ZhbHVlUmVmIExheW91dFRlc3RDb250cm9sbGVyOjpjb21wdXRlZFN0eWxlSW5j
bHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKQogewogICAgIHJldHVy
biAwOwotLSAKMS43LjQuNA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92259</attachid>
            <date>2011-05-04 09:38:08 -0700</date>
            <delta_ts>2011-05-05 00:48:08 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>25083</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA5YjYxOWEwN2EwY2QwYWVmY2RiYzg4NDYzNDA0ZjEzM2I3YzIxM2NmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDMgTWF5IDIwMTEgMjA6MDI6MzEgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
cm9wb3NlZCBwYXRjaAoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTAgKysrKysrCiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250
cm9scy10cmFuc2Zvcm1lZC5odG1sICB8ICAgMTQgKysrKysrLS0tCiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICB8ICAgMTEgKysrKysrKwogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRWxlbWVudC5oICAgICAgICAgfCAgICAxICsKIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkVsZW1lbnQuY3BwICAgICAgICAgIHwgICAgNSAr
KysKIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAxMSArKysrKysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmNwcCAgICB8ICAgMTAgKysrKysrCiAuLi4vZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0ay5oICB8ICAgIDEgKwogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDExICsrKysrKysKIFNvdXJjZS9XZWJLaXQvbWFjL0RP
TS9XZWJET01PcGVyYXRpb25zLm1tICAgICAgICAgIHwgICAgNSArKysKIFNvdXJjZS9XZWJLaXQv
bWFjL0RPTS9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5oICAgIHwgICAgMSArCiBTb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKysrKysrKwog
Li4uL3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcCAgfCAgICA5
ICsrKysrKwogLi4uL3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmgg
ICAgfCAgICAxICsKIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAxMSArKysrKysrCiBTb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5j
cHAgICAgICAgICAgICAgICB8ICAgMTIgKysrKysrKysKIFNvdXJjZS9XZWJLaXQvd2luL0RPTUNv
cmVDbGFzc2VzLmggICAgICAgICAgICAgICAgIHwgICAgMyArKwogVG9vbHMvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMwICsrKysrKysrKysrKysrKysr
KysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgICAgICB8
ICAgMTEgKysrKysrKwogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aCAgICAgICAgfCAgICAxICsKIC4uLi9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAg
ICAgICAgICAgICAgIHwgICAxMCArKysrKysKIC4uLi9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oIHwgICAgMSArCiAuLi4vRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCB8ICAgMTAgKysrKysrCiAuLi4vRHVtcFJlbmRlclRy
ZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tICB8ICAgMTAgKysrKysrCiBUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCB8ICAgIDUgKysrCiBU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmggICB8ICAgIDEg
KwogLi4uL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgfCAg
IDE5ICsrKysrKysrKysrKwogVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRy
b2xsZXJXeC5jcHAgfCAgICA1ICsrKwogMjggZmlsZXMgY2hhbmdlZCwgMjI1IGluc2VydGlvbnMo
KyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ0OTI5ZjcuLmZlYzg2MzEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMS0wNS0wNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjpwc2V1ZG9TaGFkb3dJZCgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAzNAorCisgICAgICAg
ICogbWVkaWEvdmlkZW8tY29udHJvbHMtdHJhbnNmb3JtZWQuaHRtbDogUmVmYWN0b3JlZCB0byB1
c2UgdGhlCisgICAgICAgIHBzZXVkb1NoYWRvd0lkKCkgTGF5b3V0VGVzdENvbnRyb2xsZXIgbWV0
aG9kLgorCiAyMDExLTA1LTA0ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXRyYW5zZm9ybWVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby1jb250cm9scy10cmFuc2Zvcm1lZC5odG1sCmluZGV4IDE2ZWVlOGEu
LjAyMGNlMGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXRy
YW5zZm9ybWVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtdHJh
bnNmb3JtZWQuaHRtbApAQCAtMTksMTEgKzE5LDE1IEBACiAgICAgICAgIHdhaXRGb3JFdmVudCgn
Y2FucGxheXRocm91Z2gnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CiAgICAgICAgICAgICAgICAgLy8gRmluZCB0aGUgcGxheSBidXR0b24gYW5k
IGNsaWNrIHRoZSBtaWRkbGUgb2YgaXRzIGJvdW5kaW5nIGJveC4KLSAgICAgICAgICAgICAgICAv
LyBUaGlzIGFwcHJvYWNoIGhhcmQtY29kZXMgdGhlIGNvbnN0cnVjdGlvbiBvcmRlciBvZiB0aGUg
bWVkaWEKLSAgICAgICAgICAgICAgICAvLyBjb250cm9scywgd2hpY2ggaXMgdWdseSwgYnV0IHNh
ZGx5IGlzIGFsc28gY3VycmVudGx5IHRoZSBvbmx5Ci0gICAgICAgICAgICAgICAgLy8gd2F5IHRv
IGRvIGl0LgotICAgICAgICAgICAgICAgIC8vIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU4NTg0IGlzIHRyYWNraW5nIGZpeGluZyB0aGF0LgotICAgICAgICAgICAgICAg
IHZhciBwbGF5QnV0dG9uID0gbGF5b3V0VGVzdENvbnRyb2xsZXIuc2hhZG93Um9vdCh2aWRlbyku
Zmlyc3RDaGlsZC5maXJzdENoaWxkLmNoaWxkcmVuWzFdOworICAgICAgICAgICAgICAgIHZhciBw
bGF5QnV0dG9uOworICAgICAgICAgICAgICAgIHZhciBjb250cm9sc1NoYWRvdyA9IGxheW91dFRl
c3RDb250cm9sbGVyLnNoYWRvd1Jvb3QodmlkZW8pLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZDsKKyAg
ICAgICAgICAgICAgICBmb3IgKGNoaWxkID0gY29udHJvbHNTaGFkb3cuZmlyc3RDaGlsZDsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQubmV4dFNpYmxpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgIGlm
IChsYXlvdXRUZXN0Q29udHJvbGxlci5zaGFkb3dQc2V1ZG9JZChjaGlsZCkgPT0gIi13ZWJraXQt
bWVkaWEtY29udHJvbHMtcGxheS1idXR0b24iKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
cGxheUJ1dHRvbiA9IGNoaWxkOworICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAg
IGlmICghcGxheUJ1dHRvbikgewogICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiRmFpbGVk
IHRvIGZpbmQgcGxheS9wYXVzZSBidXR0b24uIik7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAzMGU0ZTM2Li4zMWZiOTU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA1LTA0ICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBzZXVkb1No
YWRvd0lkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYwMDM0CisKKyAgICAgICAgKiBwdWJsaWMvV2ViRWxlbWVudC5oOgorICAgICAgICAqIHNyYy9X
ZWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWxlbWVudDo6c2hhZG93UHNldWRv
SWQpOgorCiAyMDExLTA1LTAzICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFbGVtZW50LmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJFbGVtZW50LmgKaW5kZXggNTNiNmFhMy4uMDI0ZGI2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkVsZW1lbnQuaApAQCAtNjIsNiArNjIsNyBA
QCBjbGFzcyBXZWJOYW1lZE5vZGVNYXA7CiAgICAgICAgIFdFQktJVF9BUEkgV2ViTm9kZSBzaGFk
b3dSb290KCk7CiAgICAgICAgIFdFQktJVF9BUEkgV2ViTm9kZSBlbnN1cmVTaGFkb3dSb290KCk7
CiAgICAgICAgIFdFQktJVF9BUEkgdm9pZCByZW1vdmVTaGFkb3dSb290KCk7CisgICAgICAgIFdF
QktJVF9BUEkgV2ViU3RyaW5nIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAKICAgICAgICAgLy8g
UmV0dXJucyB0aGUgbGFuZ3VhZ2UgY29kZSBzcGVjaWZpZWQgZm9yIHRoaXMgZWxlbWVudC4gIFRo
aXMgYXR0cmlidXRlCiAgICAgICAgIC8vIGlzIGluaGVyaXRlZCwgc28gdGhlIHJldHVybmVkIHZh
bHVlIGlzIGRyYXduIGZyb20gdGhlIGNsb3Nlc3QgcGFyZW50CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkVsZW1lbnQuY3BwCmluZGV4IDM2MWJmZWUuLjdlODUxYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkVsZW1lbnQuY3BwCkBAIC0xMDYsNiArMTA2LDExIEBAIHZv
aWQgV2ViRWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdCgpCiAgICAgdW53cmFwPEVsZW1lbnQ+KCkt
PnJlbW92ZVNoYWRvd1Jvb3QoKTsKIH0KIAorV2ViU3RyaW5nIFdlYkVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViU3RyaW5nKGNvbnN0VW53cmFwPEVsZW1l
bnQ+KCktPnNoYWRvd1BzZXVkb0lkKCkuc3RyaW5nKCkpOworfQorCiBXZWJTdHJpbmcgV2ViRWxl
bWVudDo6Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkgY29uc3QKIHsKICAgICByZXR1cm4gV2Vi
U3RyaW5nKGNvbnN0VW53cmFwPEVsZW1lbnQ+KCktPmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwppbmRleCBjY2UyMzkwLi42NTA4ZWM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDUtMDQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFu
ZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cHNldWRvU2hhZG93SWQoKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAwMzQKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6Cisg
ICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNoYWRvd1BzZXVkb0lkKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoKKwogMjAxMS0w
NS0wMyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAY29kZWF1cm9yYS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5j
cHAKaW5kZXggMjkwM2NlZS4uNTMwZGY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBA
IC00MTYsNiArNDE2LDE2IEBAIENTdHJpbmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjptYXJr
ZXJUZXh0Rm9yTGlzdEl0ZW0oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBKCiAgICAgcmV0dXJuIFdl
YkNvcmU6Om1hcmtlclRleHRGb3JMaXN0SXRlbShlbGVtZW50KS51dGY4KCk7CiB9CiAKK0NTdHJp
bmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzaGFkb3dQc2V1ZG9JZChKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KQoreworICAgIEpTQzo6RXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjb250ZXh0KTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KHRv
SlMoZXhlYywgbm9kZU9iamVjdCkpOworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJu
IENTdHJpbmcoKTsKKworICAgIHJldHVybiBlbGVtZW50LT5zaGFkb3dQc2V1ZG9JZCgpLnN0cmlu
ZygpLnV0ZjgoKTsKK30KKwogdW5zaWduZWQgaW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6
bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCmluZGV4
IGQ3ZDcxN2MuLjMzOGJiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCkBAIC04MSw2ICs4MSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwYXVzZVRyYW5zaXRpb24oV2ViS2l0V2ViRnJh
bWUqLCBjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3QgY2hhciogZWxlbWVudCk7
CiAgICAgc3RhdGljIGJvb2wgcGF1c2VTVkdBbmltYXRpb24oV2ViS2l0V2ViRnJhbWUqLCBjb25z
dCBjaGFyKiBhbmltYXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IGNoYXIqIGVsZW1lbnRJZCk7
CiAgICAgc3RhdGljIFdURjo6Q1N0cmluZyBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oV2ViS2l0V2Vi
RnJhbWUqLCBKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCk7CisgICAgc3RhdGlj
IFdURjo6Q1N0cmluZyBzaGFkb3dQc2V1ZG9JZChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgbm9k
ZU9iamVjdCk7CiAgICAgc3RhdGljIHVuc2lnbmVkIGludCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlv
bnMoV2ViS2l0V2ViRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhX
ZWJLaXRXZWJGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoV2ViS2l0
V2ViRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA2ZTU2YmRmLi4yYjhlZDY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDUtMDQgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cHNldWRvU2hh
ZG93SWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjAwMzQKKworICAgICAgICAqIERPTS9XZWJET01PcGVyYXRpb25zLm1tOgorICAgICAgICAoLVtE
T01FbGVtZW50IF9zaGFkb3dQc2V1ZG9JZF0pOgorICAgICAgICAqIERPTS9XZWJET01PcGVyYXRp
b25zUHJpdmF0ZS5oOgorCiAyMDExLTA1LTAzICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFp
eEBjb2RlYXVyb3JhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3Yu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9ucy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRpb25zLm1tCmluZGV4IGY1ZDNjYWIu
LjJlOGVlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRp
b25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRpb25zLm1tCkBA
IC03NSw2ICs3NSwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogICAgIHJldHVybiBXZWJDb3Jl
OjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oY29yZShzZWxmKSk7CiB9CiAKKy0gKE5TU3RyaW5nICop
X3NoYWRvd1BzZXVkb0lkCit7CisgICAgcmV0dXJuIGNvcmUoc2VsZiktPnNoYWRvd1BzZXVkb0lk
KCk7Cit9CisKIC0gKEpTVmFsdWVSZWYpX3NoYWRvd1Jvb3Q6KEpTQ29udGV4dFJlZiljb250ZXh0
CiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnNQcml2YXRlLmgKaW5kZXggYjM1YWYxZC4u
ZjA0MTk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlv
bnNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnNQ
cml2YXRlLmgKQEAgLTM1LDYgKzM1LDcgQEAKIC0gKEpTVmFsdWVSZWYpX3NoYWRvd1Jvb3Q6KEpT
Q29udGV4dFJlZiljb250ZXh0OwogLSAoSlNWYWx1ZVJlZilfZW5zdXJlU2hhZG93Um9vdDooSlND
b250ZXh0UmVmKWNvbnRleHQ7CiAtICh2b2lkKV9yZW1vdmVTaGFkb3dSb290OworLSAoTlNTdHJp
bmcgKilfc2hhZG93UHNldWRvSWQ7CiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgKFdl
YkRPTURvY3VtZW50T3BlcmF0aW9uc1ByaXZhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDE5MzNlYTMu
LmYyOGQ3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDUtMDQgIFBo
aWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6cHNldWRvU2hhZG93SWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjAwMzQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpz
aGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQuaDoKKwogMjAxMS0wNS0wMyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhA
Y29kZWF1cm9yYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmNwcAppbmRleCA5ZmE0MzI0Li5lNjA2MWIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0LmNwcApAQCAtMTEwOSw2ICsxMTA5LDE1IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OnJlbW92ZVNoYWRvd1Jvb3QoY29uc3QgUVdlYkVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
d2ViRWxlbWVudC0+cmVtb3ZlU2hhZG93Um9vdCgpOwogfQogCitRU3RyaW5nIER1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0OjpzaGFkb3dQc2V1ZG9JZChjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCkK
K3sKKyAgICBXZWJDb3JlOjpFbGVtZW50KiB3ZWJFbGVtZW50ID0gZWxlbWVudC5tX2VsZW1lbnQ7
CisgICAgUVN0cmluZyBwc2V1ZG9JZDsKKyAgICBpZiAod2ViRWxlbWVudCkKKyAgICAgICAgcHNl
dWRvSWQgPSB3ZWJFbGVtZW50LT5zaGFkb3dQc2V1ZG9JZCgpLnN0cmluZygpOworICAgIHJldHVy
biBwc2V1ZG9JZDsKK30KKwogLy8gUHJvdmlkZSBhIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0
aCBwcmV2aW91c2x5IGV4cG9ydGVkIHByaXZhdGUgc3ltYm9scyBhcyBvZiBRdFdlYktpdCA0LjYg
cmVsZWFzZQogCiB2b2lkIFFXRUJLSVRfRVhQT1JUIHF0X3Jlc3VtZUFjdGl2ZURPTU9iamVjdHMo
UVdlYkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAppbmRleCBkNDBlMDk2Li5jMDI3ZDJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oCkBAIC0yMDUsNiArMjA1LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBRVmFyaWFudCBzaGFkb3dSb290KGNvbnN0IFFXZWJFbGVtZW50Jik7CiAgICAgc3RhdGlj
IFFWYXJpYW50IGVuc3VyZVNoYWRvd1Jvb3QoY29uc3QgUVdlYkVsZW1lbnQmKTsKICAgICBzdGF0
aWMgdm9pZCByZW1vdmVTaGFkb3dSb290KGNvbnN0IFFXZWJFbGVtZW50Jik7CisgICAgc3RhdGlj
IFFTdHJpbmcgc2hhZG93UHNldWRvSWQoY29uc3QgUVdlYkVsZW1lbnQmKTsKIH07CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCmluZGV4IDA5M2RlNGEuLjQ0NTI0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMS0wNS0wNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5k
QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjpwc2V1ZG9TaGFkb3dJZCgpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAzNAorCisg
ICAgICAgICogRE9NQ29yZUNsYXNzZXMuY3BwOgorICAgICAgICAoRE9NRWxlbWVudDo6c2hhZG93
UHNldWRvSWQpOgorICAgICAgICAqIERPTUNvcmVDbGFzc2VzLmg6CisKIDIwMTEtMDUtMDIgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRh
bSBSb2Jlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAppbmRleCA3MTM3NDQ5Li5j
NzY2YzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCkBAIC0xMTYwLDYgKzEx
NjAsMTggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjptYXJrZXJUZXh0
Rm9yTGlzdEl0ZW0oCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NRWxlbWVudDo6c2hhZG93UHNldWRvSWQoCisgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCU1RSKiByZXN1bHQpCit7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BP
SU5URVI7CisKKyAgICBBU1NFUlQobV9lbGVtZW50KTsKKworICAgICpyZXN1bHQgPSBCU3RyaW5n
KG1fZWxlbWVudC0+c2hhZG93UHNldWRvSWQoKS5zdHJpbmcoKSkucmVsZWFzZSgpOworICAgIHJl
dHVybiBTX09LOworfQorCiAvLyBJRE9NRWxlbWVudENTU0lubGluZVN0eWxlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6c3R5bGUoIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vRE9NQ29yZUNsYXNzZXMuaCBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2Vz
LmgKaW5kZXggYzUyZDkzMy4uNWRjYjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
RE9NQ29yZUNsYXNzZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5o
CkBAIC03NzksNiArNzc5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oCiAgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQlNUUiogbWFya2VyVGV4dCk7CiAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2hhZG93UHNldWRvSWQoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNU
UiogcmVzdWx0KTsKKwogICAgIC8vIElET01FbGVtZW50Q1NTSW5saW5lU3R5bGUKICAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3R5bGUoCiAgICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSURPTUNTU1N0eWxlRGVjbGFyYXRpb24qKiByZXN1bHQpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJmYmM3MGEuLjhhNzI0ZTIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxMS0wNS0wNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjpwc2V1ZG9TaGFkb3dJZCgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAzNAorCisgICAgICAg
IHNoYWRvd1BzZXVkb0lkIHN1cHBvcnQgaW4gdGhlIHZhcmlvdXMgTGF5b3V0VGVzdENvbnRyb2xs
ZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2hhZG93UHNldWRvSWRDYWxsYmFj
ayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hh
ZG93UHNldWRvSWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250
cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNoYWRvd1BzZXVk
b0lkKToKKwogMjAxMS0wNS0wNCAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDRjYTkwZDguLjY5YTRjODEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTIw
ODYsNiArMjA4NiwxNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTZXJpYWxpemVIVFRQTG9hZHND
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZQogICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2hhZG93
UHNldWRvSWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgSlNPYmplY3RSZWYsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50
Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExh
eW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBjb250cm9sbGVyLT5zaGFkb3dQ
c2V1ZG9JZChjb250ZXh0LCBhcmd1bWVudHNbMF0pLmdldCgpKTsKK30KKwogLy8gU3RhdGljIFZh
bHVlcwogCiBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRHbG9iYWxGbGFnQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtMjMzMCw2ICsyMzQwLDcgQEAgSlNTdGF0
aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAg
ICAgIHsgImRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbiIsIGRlbGV0ZUxvY2FsU3RvcmFnZUZv
ck9yaWdpbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm9yaWdpbnNXaXRoTG9jYWxTdG9y
YWdlIiwgb3JpZ2luc1dpdGhMb2NhbFN0b3JhZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJzZXRTaG91bGRQYWludEJyb2tlbkltYWdlIiwgc2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNoYWRvd1BzZXVkb0lkIiwgc2hhZG93UHNldWRv
SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IGEzMWU5MDguLmE4
MTc5ZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApA
QCAtNzUsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJ
ZChKU1N0cmluZ1JlZiBpZCwgZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsIGZsb2F0IHBhZ2VIZWln
aHRJblBpeGVscyk7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBhZ2VQcm9wZXJ0eShj
b25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKSBjb25zdDsKICAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VO
dW1iZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IG1hcmdpblRvcCwgaW50IG1hcmdpblJp
Z2h0LCBpbnQgbWFyZ2luQm90dG9tLCBpbnQgbWFyZ2luTGVmdCkgY29uc3Q7CisgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IHNoYWRvd1BzZXVkb0lkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJl
ZikgY29uc3Q7CiAgICAgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlTnVtYmVyKSBjb25z
dDsKICAgICBKU1N0cmluZ1JlZiBwYXRoVG9Mb2NhbFJlc291cmNlKEpTQ29udGV4dFJlZiwgSlNT
dHJpbmdSZWYgdXJsKTsKICAgICB2b2lkIHF1ZXVlQmFja05hdmlnYXRpb24oaW50IGhvd0ZhckJh
Y2t3YXJkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBlZThkNWFjLi42NDUwYWU3IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CkBAIC0xNzYsNiArMTc2LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250
cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgic2V0WFNTQXVkaXRvckVu
YWJsZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKTsKICAg
ICBiaW5kTWV0aG9kKCJzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOwog
ICAgIGJpbmRNZXRob2QoInNoYWRvd1Jvb3QiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNoYWRv
d1Jvb3QpOworICAgIGJpbmRNZXRob2QoInNoYWRvd1BzZXVkb0lkIiwgJkxheW91dFRlc3RDb250
cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZCk7CiAgICAgYmluZE1ldGhvZCgic2hvd1dlYkluc3BlY3Rv
ciIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hvd1dlYkluc3BlY3Rvcik7CiAgICAgYmluZE1l
dGhvZCgic2ltdWxhdGVEZXNrdG9wTm90aWZpY2F0aW9uQ2xpY2siLCAmTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNpbXVsYXRlRGVza3RvcE5vdGlmaWNhdGlvbkNsaWNrKTsKICAgICBiaW5kTWV0aG9k
KCJzdXNwZW5kQW5pbWF0aW9ucyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3VzcGVuZEFuaW1h
dGlvbnMpOwpAQCAtNzEwLDYgKzcxMSwxNSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpy
ZW1vdmVTaGFkb3dSb290KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcAogICAg
IGVsZW1lbnQucmVtb3ZlU2hhZG93Um9vdCgpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzaGFkb3dQc2V1ZG9JZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3Bw
VmFyaWFudCogcmVzdWx0KQoreworICAgIFdlYkVsZW1lbnQgZWxlbWVudDsKKyAgICBpZiAoIVdl
YkJpbmRpbmdzOjpnZXRFbGVtZW50KGFyZ3VtZW50c1swXS52YWx1ZS5vYmplY3RWYWx1ZSwgJmVs
ZW1lbnQpKQorICAgICAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBlbHNlCisgICAgICAgIHJl
c3VsdC0+c2V0KGVsZW1lbnQuc2hhZG93UHNldWRvSWQoKS51dGY4KCkpOworfQorCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzaG93V2ViSW5zcGVjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBtX3NoZWxsLT5zaG93RGV2VG9vbHMoKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCmluZGV4IDQ0YWMyY2QuLjMzY2ZhYWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMjc0LDYgKzI3NCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNoYWRvd1Jvb3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOwogICAgIHZvaWQgZW5zdXJlU2hhZG93Um9vdChjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCByZW1vdmVTaGFkb3dSb290KGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNoYWRvd1BzZXVkb0lkKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8vIFRoZSBmYWxsYmFj
ayBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYSBub25leGlzdGVudCBtZXRob2QgaXMgY2FsbGVkIG9u
CiAgICAgLy8gdGhlIGxheW91dCB0ZXN0IGNvbnRyb2xsZXIgb2JqZWN0LgpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXgg
NjE3YTA4Zi4uMmE0Mzk3ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
TGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC05MDUsNiArOTA1LDE2IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2VyVGV4dEZvckxpc3RJ
dGVtKEpTQ29udGV4dFJlCiAgICAgcmV0dXJuIG1hcmtlclRleHQ7CiB9CiAKK0pTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hhZG93UHNldWRvSWQoSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCkgY29uc3QKK3sKKyAgICBDU3Ry
aW5nIGlkID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzaGFkb3dQc2V1ZG9JZChjb250ZXh0
LCBub2RlT2JqZWN0KTsKKyAgICBpZiAoaWQuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJlc3VsdChBZG9wdCwgSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoaWQuZGF0YSgpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXV0aGVudGljYXRlU2Vzc2lvbihKU1N0cmluZ1Jl
ZiwgSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmKQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IGU4NWE3N2MuLmY0
ZTk0ODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW0KQEAgLTI3OSw2ICsyNzksMTYgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oSlNDb250ZXh0
UmUKICAgICByZXR1cm4gbWFya2VyVGV4dDsKIH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IExheW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZChKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KSBjb25zdAoreworICAgIERPTUVsZW1lbnQgKmVsZW1l
bnQgPSBbRE9NRWxlbWVudCBfRE9NRWxlbWVudEZyb21KU0NvbnRleHQ6Y29udGV4dCB2YWx1ZTpu
b2RlT2JqZWN0XTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4oKTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzaGFkb3dJ
ZChBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKVtlbGVtZW50
IF9zaGFkb3dQc2V1ZG9JZF0pKTsKKyAgICByZXR1cm4gc2hhZG93SWQ7Cit9CisKIGludCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlk
LCBmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzKQogewog
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaWRDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBpZCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCA3MDdiM2EzLi45YzliM2Jk
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmNwcApAQCAtNzk5LDYgKzc5OSwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpy
ZW1vdmVTaGFkb3dSb290KGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50KQogICAgIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpyZW1vdmVTaGFkb3dSb290KGVsZW1lbnQpOwogfQogCitRU3RyaW5n
IExheW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZChjb25zdCBRV2ViRWxlbWVudCYg
ZWxlbWVudCkKK3sKKyAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNoYWRvd1Bz
ZXVkb0lkKGVsZW1lbnQpOworfQorCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9m
UGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKCkKIHsKICAgICBpbnQgcGVuZGlu
Z1Blcm1pc3Npb25Db3VudCA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmgKaW5kZXggZTQ0MDQ4Zi4uYzY2NjUwYiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApAQCAtMjUzLDYg
KzI1Myw3IEBAIHB1YmxpYyBzbG90czoKICAgICBRVmFyaWFudCBzaGFkb3dSb290KGNvbnN0IFFX
ZWJFbGVtZW50Jik7CiAgICAgUVZhcmlhbnQgZW5zdXJlU2hhZG93Um9vdChjb25zdCBRV2ViRWxl
bWVudCYpOwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdChjb25zdCBRV2ViRWxlbWVudCYpOwor
ICAgIFFTdHJpbmcgc2hhZG93UHNldWRvSWQoY29uc3QgUVdlYkVsZW1lbnQmKTsKIAogICAgIHZv
aWQgZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQoaW50IHdvcmxkSUQsIGNvbnN0IFFTdHJp
bmcmIHNjcmlwdCk7CiAgICAgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlSW5kZXgpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldp
bi5jcHAKaW5kZXggYWUzY2Q5Ny4uZGYwNjMwMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC0yMjcsNiArMjI3LDI1
IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vy
VGV4dEZvckxpc3RJdGVtKEpTQ29udGV4dFJlCiAgICAgcmV0dXJuIG1hcmtlclRleHQ7CiB9CiAK
K0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hhZG93UHNl
dWRvSWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCkgY29uc3QK
K3sKKyAgICBDT01QdHI8SURPTUVsZW1lbnQ+IGVsZW1lbnQ7CisgICAgaWYgKEZBSUxFRCh3ZWJW
aWV3UHJpdmF0ZS0+ZWxlbWVudEZyb21KUyhjb250ZXh0LCBub2RlT2JqZWN0LCAmZWxlbWVudCkp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIENPTVB0cjxJRE9NRWxlbWVudFByaXZhdGU+IGVs
ZW1lbnRQcml2YXRlKFF1ZXJ5LCBlbGVtZW50KTsKKyAgICBpZiAoIWVsZW1lbnRQcml2YXRlKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIEJTVFIgaWRCU1RSID0gMDsKKyAgICBpZiAoRkFJTEVE
KGVsZW1lbnRQcml2YXRlLT5zaGFkb3dQc2V1ZG9JZCgmaWRCU1RSKSkpCisgICAgICAgIHJldHVy
biAwOworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGlkKEFkb3B0LCBKU1N0cmluZ0Ny
ZWF0ZVdpdGhCU1RSKGlkQlNUUikpOworICAgIFN5c0ZyZWVTdHJpbmcoaWRCU1RSKTsKKyAgICBy
ZXR1cm4gaWQ7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OndhaXRGb3JQb2xpY3lE
ZWxlZ2F0ZSgpCiB7CiAgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRleCAxYWQz
NTllLi4xOGVmMTUwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRU
ZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRU
ZXN0Q29udHJvbGxlcld4LmNwcApAQCAtNTA4LDYgKzUwOCwxMSBAQCBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlclRleHRGb3JMaXN0SXRlbShKU0Nv
bnRleHRSZQogICAgIHJldHVybiAwOwogfQogCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNoYWRvd1BzZXVkb0lkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U1ZhbHVlUmVmIG5vZGVPYmplY3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKIEpTVmFs
dWVSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVk
SW5mbyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpCiB7CiAgICAgcmV0dXJuIDA7Ci0tIAoxLjcu
NC40
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92384</attachid>
            <date>2011-05-05 00:48:08 -0700</date>
            <delta_ts>2011-05-05 02:03:14 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>32990</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA2MmEwYTcwNjU5MGFiZWM4YTEwODRmOWMzNzRiYTk0OGMzYTMzZjA2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDMgTWF5IDIwMTEgMjA6MDI6MzEgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
cm9wb3NlZCBwYXRjaAoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTAgKysrKysrCiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250
cm9scy10cmFuc2Zvcm1lZC5odG1sICB8ICAgMTQgKysrKystLS0KIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgIHwgICAxMSArKysrKysKIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkVsZW1lbnQuaCAgICAgICAgIHwgICAgMSArCiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFbGVtZW50LmNwcCAgICAgICAgICB8ICAgIDUgKysr
CiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTEgKysrKysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNw
cCAgICB8ICAgMTAgKysrKysrCiAuLi4vZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0ay5oICB8ICAgIDEgKwogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDExICsrKysrKwogU291cmNlL1dlYktpdC9tYWMvRE9NL1dl
YkRPTU9wZXJhdGlvbnMubW0gICAgICAgICAgfCAgICA1ICsrKwogU291cmNlL1dlYktpdC9tYWMv
RE9NL1dlYkRPTU9wZXJhdGlvbnNQcml2YXRlLmggICAgfCAgICAxICsKIFNvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArKysrKysKIC4uLi9x
dC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAgIHwgICAgOSArKysr
KwogLi4uL3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmggICAgfCAg
ICAxICsKIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxMSArKysrKysKIFNvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcCAgICAg
ICAgICAgICAgIHwgICAxMiArKysrKysrCiBTb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nl
cy5oICAgICAgICAgICAgICAgICB8ICAgIDMgKysKIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNSArKysrKysrKysKIC4uLi9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwICAgIHwgICAgNSArKysKIC4uLi9BUEkv
Yy9XS0J1bmRsZU5vZGVIYW5kbGVQcml2YXRlLmggICAgICAgICAgICAgIHwgICAgMSArCiAuLi4v
RE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgICAgICAgICAgICAgICB8ICAgIDggKysr
KysKIC4uLi9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmggIHwg
ICAgMSArCiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMzQgKysrKysrKysrKysrKysrKysrKysKIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcCAgICAgIHwgICAxMSArKysrKysKIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggICAgICAgIHwgICAgMSArCiAuLi4vY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwICAgICAgICAgICAgICB8ICAgMTAgKysrKysrCiAuLi4v
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaCB8ICAgIDEgKwog
Li4uL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgfCAgIDEw
ICsrKysrKwogLi4uL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bSAgfCAgIDEwICsrKysrKwogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5jcHAgfCAgICA1ICsrKwogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVz
dENvbnRyb2xsZXJRdC5oICAgfCAgICAxICsKIC4uLi9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0
VGVzdENvbnRyb2xsZXJXaW4uY3BwIHwgICAyNyArKysrKysrKysrKysrKysKIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwIHwgICAgNSArKysKIC4uLi9C
aW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwgICAgICAgICAgICAgIHwgICAgMSArCiAu
Li4vSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwICAgICAgICB8ICAgMTgg
KysrKysrKysrKwogLi4uL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmggICAg
ICAgICAgfCAgICAxICsKIDM2IGZpbGVzIGNoYW5nZWQsIDI4NyBpbnNlcnRpb25zKCspLCA1IGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBiNzA0MzFjLi4xMWU5ZDNmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTEtMDUtMDQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cHNldWRvU2hhZG93SWQoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAwMzQKKworICAgICAgICAqIG1lZGlh
L3ZpZGVvLWNvbnRyb2xzLXRyYW5zZm9ybWVkLmh0bWw6IFJlZmFjdG9yZWQgdG8gdXNlIHRoZQor
ICAgICAgICBwc2V1ZG9TaGFkb3dJZCgpIExheW91dFRlc3RDb250cm9sbGVyIG1ldGhvZC4KKwog
MjAxMS0wNS0wNSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkIGV4cGVjdGF0aW9ucyB1cGRhdGUgZm9yIE1BQyBHUFUgZmxha2luZXNzLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtdHJhbnNmb3JtZWQu
aHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXRyYW5zZm9ybWVkLmh0bWwK
aW5kZXggMTZlZWU4YS4uMDIwY2UwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tY29udHJvbHMtdHJhbnNmb3JtZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRl
by1jb250cm9scy10cmFuc2Zvcm1lZC5odG1sCkBAIC0xOSwxMSArMTksMTUgQEAKICAgICAgICAg
d2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICAvLyBGaW5kIHRoZSBw
bGF5IGJ1dHRvbiBhbmQgY2xpY2sgdGhlIG1pZGRsZSBvZiBpdHMgYm91bmRpbmcgYm94LgotICAg
ICAgICAgICAgICAgIC8vIFRoaXMgYXBwcm9hY2ggaGFyZC1jb2RlcyB0aGUgY29uc3RydWN0aW9u
IG9yZGVyIG9mIHRoZSBtZWRpYQotICAgICAgICAgICAgICAgIC8vIGNvbnRyb2xzLCB3aGljaCBp
cyB1Z2x5LCBidXQgc2FkbHkgaXMgYWxzbyBjdXJyZW50bHkgdGhlIG9ubHkKLSAgICAgICAgICAg
ICAgICAvLyB3YXkgdG8gZG8gaXQuCi0gICAgICAgICAgICAgICAgLy8gaHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg1ODQgaXMgdHJhY2tpbmcgZml4aW5nIHRoYXQuCi0g
ICAgICAgICAgICAgICAgdmFyIHBsYXlCdXR0b24gPSBsYXlvdXRUZXN0Q29udHJvbGxlci5zaGFk
b3dSb290KHZpZGVvKS5maXJzdENoaWxkLmZpcnN0Q2hpbGQuY2hpbGRyZW5bMV07CisgICAgICAg
ICAgICAgICAgdmFyIHBsYXlCdXR0b247CisgICAgICAgICAgICAgICAgdmFyIGNvbnRyb2xzU2hh
ZG93ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIuc2hhZG93Um9vdCh2aWRlbykuZmlyc3RDaGlsZC5m
aXJzdENoaWxkOworICAgICAgICAgICAgICAgIGZvciAoY2hpbGQgPSBjb250cm9sc1NoYWRvdy5m
aXJzdENoaWxkOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZykgeworICAgICAgICAg
ICAgICAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLnNoYWRvd1BzZXVkb0lkKGNoaWxk
KSA9PSAiLXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBwbGF5QnV0dG9uID0gY2hpbGQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCiAg
ICAgICAgICAgICAgICAgaWYgKCFwbGF5QnV0dG9uKSB7CiAgICAgICAgICAgICAgICAgICAgIGZh
aWxUZXN0KCJGYWlsZWQgdG8gZmluZCBwbGF5L3BhdXNlIGJ1dHRvbi4iKTsKICAgICAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDA0ODE3MjUuLmMyNDZlZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDUtMDQgIFBo
aWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6cHNldWRvU2hhZG93SWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjAwMzQKKworICAgICAgICAqIHB1YmxpYy9XZWJFbGVtZW50Lmg6Cisg
ICAgICAgICogc3JjL1dlYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFbGVtZW50
OjpzaGFkb3dQc2V1ZG9JZCk6CisKIDIwMTEtMDUtMDQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRh
QGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCB1bml0IHRlc3Qgc2tpcCAoc3RhcnRQ
b3N0QW5kV2FpdE9uQ29uZGl0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRWxlbWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RWxlbWVudC5oCmluZGV4IDUzYjZhYTMuLjAyNGRiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJFbGVtZW50LmgKQEAgLTYyLDYgKzYyLDcgQEAgY2xhc3MgV2ViTmFtZWRO
b2RlTWFwOwogICAgICAgICBXRUJLSVRfQVBJIFdlYk5vZGUgc2hhZG93Um9vdCgpOwogICAgICAg
ICBXRUJLSVRfQVBJIFdlYk5vZGUgZW5zdXJlU2hhZG93Um9vdCgpOwogICAgICAgICBXRUJLSVRf
QVBJIHZvaWQgcmVtb3ZlU2hhZG93Um9vdCgpOworICAgICAgICBXRUJLSVRfQVBJIFdlYlN0cmlu
ZyBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogCiAgICAgICAgIC8vIFJldHVybnMgdGhlIGxhbmd1
YWdlIGNvZGUgc3BlY2lmaWVkIGZvciB0aGlzIGVsZW1lbnQuICBUaGlzIGF0dHJpYnV0ZQogICAg
ICAgICAvLyBpcyBpbmhlcml0ZWQsIHNvIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBkcmF3biBmcm9t
IHRoZSBjbG9zZXN0IHBhcmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFbGVtZW50
LmNwcAppbmRleCAzNjFiZmVlLi43ZTg1MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJFbGVtZW50LmNwcApAQCAtMTA2LDYgKzEwNiwxMSBAQCB2b2lkIFdlYkVsZW1lbnQ6OnJl
bW92ZVNoYWRvd1Jvb3QoKQogICAgIHVud3JhcDxFbGVtZW50PigpLT5yZW1vdmVTaGFkb3dSb290
KCk7CiB9CiAKK1dlYlN0cmluZyBXZWJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFdlYlN0cmluZyhjb25zdFVud3JhcDxFbGVtZW50PigpLT5zaGFkb3dQc2V1
ZG9JZCgpLnN0cmluZygpKTsKK30KKwogV2ViU3RyaW5nIFdlYkVsZW1lbnQ6OmNvbXB1dGVJbmhl
cml0ZWRMYW5ndWFnZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdlYlN0cmluZyhjb25zdFVud3Jh
cDxFbGVtZW50PigpLT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggN2U1NGJlZS4uMWIxNTQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDExLTA1LTA0ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnBzZXVkb1NoYWRvd0lkKCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMDM0CisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmg6CisKIDIwMTEtMDUtMDQgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgR1RLIGJ1aWxkIGZpeCBhdHRlbXB0IGFm
dGVyIHI4NTgyMwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKaW5kZXggMjkwM2NlZS4uNTMwZGY2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBAIC00MTYsNiArNDE2LDE2IEBAIENTdHJp
bmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oV2ViS2l0
V2ViRnJhbWUqIGZyYW1lLCBKCiAgICAgcmV0dXJuIFdlYkNvcmU6Om1hcmtlclRleHRGb3JMaXN0
SXRlbShlbGVtZW50KS51dGY4KCk7CiB9CiAKK0NTdHJpbmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrOjpzaGFkb3dQc2V1ZG9JZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2Rl
T2JqZWN0KQoreworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKKyAg
ICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KHRvSlMoZXhlYywgbm9kZU9iamVjdCkpOwor
ICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKworICAgIHJldHVy
biBlbGVtZW50LT5zaGFkb3dQc2V1ZG9JZCgpLnN0cmluZygpLnV0ZjgoKTsKK30KKwogdW5zaWdu
ZWQgaW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25z
KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShm
cmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCmluZGV4IGQ3ZDcxN2MuLjMzOGJiNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0ay5oCkBAIC04MSw2ICs4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Ym9vbCBwYXVzZVRyYW5zaXRpb24oV2ViS2l0V2ViRnJhbWUqLCBjb25zdCBjaGFyKiBuYW1lLCBk
b3VibGUgdGltZSwgY29uc3QgY2hhciogZWxlbWVudCk7CiAgICAgc3RhdGljIGJvb2wgcGF1c2VT
VkdBbmltYXRpb24oV2ViS2l0V2ViRnJhbWUqLCBjb25zdCBjaGFyKiBhbmltYXRpb25JZCwgZG91
YmxlIHRpbWUsIGNvbnN0IGNoYXIqIGVsZW1lbnRJZCk7CiAgICAgc3RhdGljIFdURjo6Q1N0cmlu
ZyBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oV2ViS2l0V2ViRnJhbWUqLCBKU0NvbnRleHRSZWYsIEpT
VmFsdWVSZWYgbm9kZU9iamVjdCk7CisgICAgc3RhdGljIFdURjo6Q1N0cmluZyBzaGFkb3dQc2V1
ZG9JZChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCk7CiAgICAgc3RhdGljIHVu
c2lnbmVkIGludCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqKTsKICAg
ICBzdGF0aWMgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFtZSopOwogICAgIHN0
YXRpYyB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwppbmRleCBjYzA0MGEyLi5mOWUzM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMDUtMDQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cHNldWRvU2hhZG93SWQoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAwMzQKKworICAgICAgICAqIERPTS9X
ZWJET01PcGVyYXRpb25zLm1tOgorICAgICAgICAoLVtET01FbGVtZW50IF9zaGFkb3dQc2V1ZG9J
ZF0pOgorICAgICAgICAqIERPTS9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5oOgorCiAyMDExLTA1
LTA0ICBDcmlzIE5lY2thciAgPGNkbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01P
cGVyYXRpb25zLm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnMubW0K
aW5kZXggZjVkM2NhYi4uMmU4ZWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9N
L1dlYkRPTU9wZXJhdGlvbnMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9w
ZXJhdGlvbnMubW0KQEAgLTc1LDYgKzc1LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAgICAg
cmV0dXJuIFdlYkNvcmU6Om1hcmtlclRleHRGb3JMaXN0SXRlbShjb3JlKHNlbGYpKTsKIH0KIAor
LSAoTlNTdHJpbmcgKilfc2hhZG93UHNldWRvSWQKK3sKKyAgICByZXR1cm4gY29yZShzZWxmKS0+
c2hhZG93UHNldWRvSWQoKTsKK30KKwogLSAoSlNWYWx1ZVJlZilfc2hhZG93Um9vdDooSlNDb250
ZXh0UmVmKWNvbnRleHQKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnNQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaApp
bmRleCBiMzVhZjFkLi5mMDQxOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00v
V2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2Vi
RE9NT3BlcmF0aW9uc1ByaXZhdGUuaApAQCAtMzUsNiArMzUsNyBAQAogLSAoSlNWYWx1ZVJlZilf
c2hhZG93Um9vdDooSlNDb250ZXh0UmVmKWNvbnRleHQ7CiAtIChKU1ZhbHVlUmVmKV9lbnN1cmVT
aGFkb3dSb290OihKU0NvbnRleHRSZWYpY29udGV4dDsKIC0gKHZvaWQpX3JlbW92ZVNoYWRvd1Jv
b3Q7CistIChOU1N0cmluZyAqKV9zaGFkb3dQc2V1ZG9JZDsKIEBlbmQKIAogQGludGVyZmFjZSBE
T01Eb2N1bWVudCAoV2ViRE9NRG9jdW1lbnRPcGVyYXRpb25zUHJpdmF0ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
aW5kZXggMTYwYTAyOS4uZmQ3MDVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMS0wNS0wNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IExh
eW91dFRlc3RDb250cm9sbGVyOjpwc2V1ZG9TaGFkb3dJZCgpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAzNAorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCiAyMDExLTA1LTA0ICBDcmlzIE5lY2thciAgPGNk
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5jcHAKaW5kZXggOWZhNDMyNC4uZTYwNjFiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5jcHAKQEAgLTExMDksNiArMTEwOSwxNSBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjpyZW1vdmVTaGFkb3dSb290KGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50KQogICAgIHdlYkVs
ZW1lbnQtPnJlbW92ZVNoYWRvd1Jvb3QoKTsKIH0KIAorUVN0cmluZyBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c2hhZG93UHNldWRvSWQoY29uc3QgUVdlYkVsZW1lbnQmIGVsZW1lbnQpCit7Cisg
ICAgV2ViQ29yZTo6RWxlbWVudCogd2ViRWxlbWVudCA9IGVsZW1lbnQubV9lbGVtZW50OworICAg
IFFTdHJpbmcgcHNldWRvSWQ7CisgICAgaWYgKHdlYkVsZW1lbnQpCisgICAgICAgIHBzZXVkb0lk
ID0gd2ViRWxlbWVudC0+c2hhZG93UHNldWRvSWQoKS5zdHJpbmcoKTsKKyAgICByZXR1cm4gcHNl
dWRvSWQ7Cit9CisKIC8vIFByb3ZpZGUgYSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggcHJl
dmlvdXNseSBleHBvcnRlZCBwcml2YXRlIHN5bWJvbHMgYXMgb2YgUXRXZWJLaXQgNC42IHJlbGVh
c2UKIAogdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9yZXN1bWVBY3RpdmVET01PYmplY3RzKFFXZWJG
cmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKaW5kZXggZDQwZTA5Ni4uYzAyN2QyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuaApAQCAtMjA1LDYgKzIwNSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UVZhcmlhbnQgc2hhZG93Um9vdChjb25zdCBRV2ViRWxlbWVudCYpOwogICAgIHN0YXRpYyBRVmFy
aWFudCBlbnN1cmVTaGFkb3dSb290KGNvbnN0IFFXZWJFbGVtZW50Jik7CiAgICAgc3RhdGljIHZv
aWQgcmVtb3ZlU2hhZG93Um9vdChjb25zdCBRV2ViRWxlbWVudCYpOworICAgIHN0YXRpYyBRU3Ry
aW5nIHNoYWRvd1BzZXVkb0lkKGNvbnN0IFFXZWJFbGVtZW50Jik7CiB9OwogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwppbmRleCBmNGUzNjk1Li5kYmJiYmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTEtMDUtMDQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cHNldWRvU2hhZG93SWQoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAwMzQKKworICAgICAg
ICAqIERPTUNvcmVDbGFzc2VzLmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OnNoYWRvd1BzZXVk
b0lkKToKKyAgICAgICAgKiBET01Db3JlQ2xhc3Nlcy5oOgorCiAyMDExLTA1LTA0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4IGF0
dGVtcHQgYWZ0ZXIgcjg1ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3Jl
Q2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKaW5kZXgg
NzEzNzQ0OS4uYzc2NmMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNs
YXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAt
MTE2MCw2ICsxMTYwLDE4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6
bWFya2VyVGV4dEZvckxpc3RJdGVtKAogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKAorICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQoreworICAgIGlmICghcmVzdWx0KQorICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOworCisgICAgQVNTRVJUKG1fZWxlbWVudCk7CisKKyAgICAqcmVzdWx0
ID0gQlN0cmluZyhtX2VsZW1lbnQtPnNoYWRvd1BzZXVkb0lkKCkuc3RyaW5nKCkpLnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gU19PSzsKK30KKwogLy8gSURPTUVsZW1lbnRDU1NJbmxpbmVTdHlsZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnN0eWxlKCAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01D
b3JlQ2xhc3Nlcy5oCmluZGV4IGM1MmQ5MzMuLjVkY2I0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29y
ZUNsYXNzZXMuaApAQCAtNzc5LDYgKzc3OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgbWFya2VyVGV4dEZvckxpc3RJdGVtKAogICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJTVFIqIG1hcmtlclRleHQpOwogCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNoYWRvd1BzZXVkb0lkKAorICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIqIHJlc3VsdCk7CisKICAgICAvLyBJRE9NRWxlbWVudENTU0lubGluZVN0eWxl
CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0eWxlKAogICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIElET01DU1NTdHlsZURlY2xhcmF0aW9uKiogcmVzdWx0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAxYjRlOTI1Li42ZTkzZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMDUtMDUgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cHNldWRvU2hhZG93SWQoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAwMzQKKworICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAgICAg
KFdLQnVuZGxlTm9kZUhhbmRsZVNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZVByaXZhdGUuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmVsZW1l
bnRSZW1vdmVTaGFkb3dSb290KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlOjplbGVtZW50U2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oOgorCiAyMDExLTA1LTA0
ICBDcmlzIE5lY2thciAgPGNkbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcAppbmRl
eCA2MGY5NzBlLi5kMDBhOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5k
bGUuY3BwCkBAIC03OCw2ICs3OCwxMSBAQCB2b2lkIFdLQnVuZGxlTm9kZUhhbmRsZVJlbW92ZVNo
YWRvd1Jvb3QoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnRIYW5kbGVSZWYpCiAgICAgdG9J
bXBsKGVsZW1lbnRIYW5kbGVSZWYpLT5lbGVtZW50UmVtb3ZlU2hhZG93Um9vdCgpOwogfQogCitX
S1N0cmluZ1JlZiBXS0J1bmRsZU5vZGVIYW5kbGVTaGFkb3dQc2V1ZG9JZChXS0J1bmRsZU5vZGVI
YW5kbGVSZWYgZWxlbWVudEhhbmRsZVJlZikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9J
bXBsKGVsZW1lbnRIYW5kbGVSZWYpLT5lbGVtZW50U2hhZG93UHNldWRvSWQoKSk7Cit9CisKIHZv
aWQgV0tCdW5kbGVOb2RlSGFuZGxlU2V0SFRNTElucHV0RWxlbWVudFZhbHVlRm9yVXNlcihXS0J1
bmRsZU5vZGVIYW5kbGVSZWYgaHRtbElucHV0RWxlbWVudEhhbmRsZVJlZiwgV0tTdHJpbmdSZWYg
dmFsdWVSZWYpCiB7CiAgICAgdG9JbXBsKGh0bWxJbnB1dEVsZW1lbnRIYW5kbGVSZWYpLT5zZXRI
VE1MSW5wdXRFbGVtZW50VmFsdWVGb3JVc2VyKHRvV1RGU3RyaW5nKHZhbHVlUmVmKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlTm9kZUhhbmRsZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlUHJpdmF0ZS5oCmluZGV4IDM5OWIw
OTQuLmRiNmE4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxl
UHJpdmF0ZS5oCkBAIC00OSw2ICs0OSw3IEBAIFdLX0VYUE9SVCBXS1JlY3QgV0tCdW5kbGVOb2Rl
SGFuZGxlR2V0RWxlbWVudEJvdW5kcyhXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVuCiBXS19F
WFBPUlQgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVuZGxlTm9kZUhhbmRsZUNvcHlFbGVtZW50
U2hhZG93Um9vdChXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudEhhbmRsZSk7CiBXS19FWFBP
UlQgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVuZGxlTm9kZUhhbmRsZUNvcHlFbGVtZW50RW5z
dXJlU2hhZG93Um9vdChXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudEhhbmRsZSk7CiBXS19F
WFBPUlQgdm9pZCBXS0J1bmRsZU5vZGVIYW5kbGVSZW1vdmVTaGFkb3dSb290KFdLQnVuZGxlTm9k
ZUhhbmRsZVJlZiBlbGVtZW50SGFuZGxlKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRs
ZU5vZGVIYW5kbGVTaGFkb3dQc2V1ZG9JZChXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudEhh
bmRsZSk7CiAKIC8qIEhUTUxJbnB1dEVsZW1lbnQgU3BlY2lmaWMgT3BlcmF0aW9ucyAqLwogV0tf
RVhQT1JUIHZvaWQgV0tCdW5kbGVOb2RlSGFuZGxlU2V0SFRNTElucHV0RWxlbWVudFZhbHVlRm9y
VXNlcihXS0J1bmRsZU5vZGVIYW5kbGVSZWYgaHRtbElucHV0RWxlbWVudEhhbmRsZSwgV0tTdHJp
bmdSZWYgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZS5jcHAKaW5kZXggOGY3M2RiZi4uZjdlNDIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC0xOTAsNiArMTkwLDE0IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlOjplbGVtZW50UmVtb3ZlU2hhZG93Um9vdCgpCiAgICAgc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KG1fbm9kZS5nZXQoKSktPnJlbW92ZVNoYWRvd1Jvb3QoKTsKIH0KIAor
U3RyaW5nIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6ZWxlbWVudFNoYWRvd1BzZXVkb0lkKCkK
K3sKKyAgICBpZiAoIW1fbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fbm9kZS5nZXQoKSkt
PnNoYWRvd1BzZXVkb0lkKCk7Cit9CisKIFBhc3NSZWZQdHI8V2ViRnJhbWU+IEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZTo6ZG9jdW1lbnRGcmFtZSgpCiB7CiAgICAgaWYgKCFtX25vZGUtPmlzRG9j
dW1lbnROb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5o
CmluZGV4IGFmOGVlYjMuLmFlMTE2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5oCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRy
PEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gZWxlbWVudFNoYWRvd1Jvb3QoKTsKICAgICBQYXNz
UmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gZWxlbWVudEVuc3VyZVNoYWRvd1Jvb3Qo
KTsKICAgICB2b2lkIGVsZW1lbnRSZW1vdmVTaGFkb3dSb290KCk7CisgICAgU3RyaW5nIGVsZW1l
bnRTaGFkb3dQc2V1ZG9JZCgpOwogCiAgICAgUGFzc1JlZlB0cjxXZWJGcmFtZT4gZG9jdW1lbnRG
cmFtZSgpOwogICAgIFBhc3NSZWZQdHI8V2ViRnJhbWU+IGh0bWxGcmFtZUVsZW1lbnRDb250ZW50
RnJhbWUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBiMDMxZDMyLi5jYTIyMjUzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDUtMDQgIFBoaWxpcHBlIE5v
cm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cHNl
dWRvU2hhZG93SWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjAwMzQKKworICAgICAgICBzaGFkb3dQc2V1ZG9JZCBzdXBwb3J0IGluIHRoZSB2YXJp
b3VzIExheW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGltcGxlbWVudGF0aW9ucy4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KHNoYWRvd1BzZXVkb0lkQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVz
dENvbnRyb2xsZXIpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNoYWRvd1BzZXVk
b0lkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxl
ckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hhZG93UHNldWRvSWQp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5t
bToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGw6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZCk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oOgorCiAyMDExLTA1LTA0ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDRjYTkwZDguLjY5YTRjODEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTIwODYs
NiArMjA4NiwxNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTZXJpYWxpemVIVFRQTG9hZHNDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZQogICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2hhZG93UHNl
dWRvSWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgSlNPYmplY3RSZWYsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291
bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisK
KyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91
dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKworICAg
IHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBjb250cm9sbGVyLT5zaGFkb3dQc2V1
ZG9JZChjb250ZXh0LCBhcmd1bWVudHNbMF0pLmdldCgpKTsKK30KKwogLy8gU3RhdGljIFZhbHVl
cwogCiBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRHbG9iYWxGbGFnQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtMjMzMCw2ICsyMzQwLDcgQEAgSlNTdGF0aWNG
dW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAg
IHsgImRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbiIsIGRlbGV0ZUxvY2FsU3RvcmFnZUZvck9y
aWdpbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm9yaWdpbnNXaXRoTG9jYWxTdG9yYWdl
Iiwgb3JpZ2luc1dpdGhMb2NhbFN0b3JhZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
ZXRTaG91bGRQYWludEJyb2tlbkltYWdlIiwgc2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZUNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCisgICAgICAgIHsgInNoYWRvd1BzZXVkb0lkIiwgc2hhZG93UHNldWRvSWRD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IGEzMWU5MDguLmE4MTc5
ZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAt
NzUsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChK
U1N0cmluZ1JlZiBpZCwgZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsIGZsb2F0IHBhZ2VIZWlnaHRJ
blBpeGVscyk7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBhZ2VQcm9wZXJ0eShjb25z
dCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKSBjb25zdDsKICAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VOdW1i
ZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IG1hcmdpblRvcCwgaW50IG1hcmdpblJpZ2h0
LCBpbnQgbWFyZ2luQm90dG9tLCBpbnQgbWFyZ2luTGVmdCkgY29uc3Q7CisgICAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IHNoYWRvd1BzZXVkb0lkKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZikg
Y29uc3Q7CiAgICAgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlTnVtYmVyKSBjb25zdDsK
ICAgICBKU1N0cmluZ1JlZiBwYXRoVG9Mb2NhbFJlc291cmNlKEpTQ29udGV4dFJlZiwgSlNTdHJp
bmdSZWYgdXJsKTsKICAgICB2b2lkIHF1ZXVlQmFja05hdmlnYXRpb24oaW50IGhvd0ZhckJhY2t3
YXJkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAppbmRleCBlZThkNWFjLi42NDUwYWU3IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBA
IC0xNzYsNiArMTc2LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9s
bGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgic2V0WFNTQXVkaXRvckVuYWJs
ZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKTsKICAgICBi
aW5kTWV0aG9kKCJzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCIsICZMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOwogICAg
IGJpbmRNZXRob2QoInNoYWRvd1Jvb3QiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNoYWRvd1Jv
b3QpOworICAgIGJpbmRNZXRob2QoInNoYWRvd1BzZXVkb0lkIiwgJkxheW91dFRlc3RDb250cm9s
bGVyOjpzaGFkb3dQc2V1ZG9JZCk7CiAgICAgYmluZE1ldGhvZCgic2hvd1dlYkluc3BlY3RvciIs
ICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hvd1dlYkluc3BlY3Rvcik7CiAgICAgYmluZE1ldGhv
ZCgic2ltdWxhdGVEZXNrdG9wTm90aWZpY2F0aW9uQ2xpY2siLCAmTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNpbXVsYXRlRGVza3RvcE5vdGlmaWNhdGlvbkNsaWNrKTsKICAgICBiaW5kTWV0aG9kKCJz
dXNwZW5kQW5pbWF0aW9ucyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3VzcGVuZEFuaW1hdGlv
bnMpOwpAQCAtNzEwLDYgKzcxMSwxNSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZW1v
dmVTaGFkb3dSb290KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcAogICAgIGVs
ZW1lbnQucmVtb3ZlU2hhZG93Um9vdCgpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzaGFkb3dQc2V1ZG9JZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFy
aWFudCogcmVzdWx0KQoreworICAgIFdlYkVsZW1lbnQgZWxlbWVudDsKKyAgICBpZiAoIVdlYkJp
bmRpbmdzOjpnZXRFbGVtZW50KGFyZ3VtZW50c1swXS52YWx1ZS5vYmplY3RWYWx1ZSwgJmVsZW1l
bnQpKQorICAgICAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3Vs
dC0+c2V0KGVsZW1lbnQuc2hhZG93UHNldWRvSWQoKS51dGY4KCkpOworfQorCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzaG93V2ViSW5zcGVjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBtX3NoZWxsLT5zaG93RGV2VG9vbHMoKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCmluZGV4IDQ0YWMyY2QuLjMzY2ZhYWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMjc0LDYgKzI3NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNoYWRvd1Jvb3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOwogICAgIHZvaWQgZW5zdXJlU2hhZG93Um9vdChjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCByZW1vdmVTaGFkb3dSb290KGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNoYWRvd1BzZXVkb0lkKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8vIFRoZSBmYWxsYmFjayBt
ZXRob2QgaXMgY2FsbGVkIHdoZW4gYSBub25leGlzdGVudCBtZXRob2QgaXMgY2FsbGVkIG9uCiAg
ICAgLy8gdGhlIGxheW91dCB0ZXN0IGNvbnRyb2xsZXIgb2JqZWN0LgpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggNjE3
YTA4Zi4uMmE0Mzk3ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91
dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC05MDUsNiArOTA1LDE2IEBAIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2VyVGV4dEZvckxpc3RJdGVt
KEpTQ29udGV4dFJlCiAgICAgcmV0dXJuIG1hcmtlclRleHQ7CiB9CiAKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hhZG93UHNldWRvSWQoSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCkgY29uc3QKK3sKKyAgICBDU3RyaW5n
IGlkID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzaGFkb3dQc2V1ZG9JZChjb250ZXh0LCBu
b2RlT2JqZWN0KTsKKyAgICBpZiAoaWQuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJlc3VsdChBZG9wdCwgSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoaWQuZGF0YSgpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXV0aGVudGljYXRlU2Vzc2lvbihKU1N0cmluZ1JlZiwg
SlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmKQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IGU4NWE3N2MuLmY0ZTk0
ODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRy
b2xsZXJNYWMubW0KQEAgLTI3OSw2ICsyNzksMTYgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oSlNDb250ZXh0UmUK
ICAgICByZXR1cm4gbWFya2VyVGV4dDsKIH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExh
eW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZChKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNWYWx1ZVJlZiBub2RlT2JqZWN0KSBjb25zdAoreworICAgIERPTUVsZW1lbnQgKmVsZW1lbnQg
PSBbRE9NRWxlbWVudCBfRE9NRWxlbWVudEZyb21KU0NvbnRleHQ6Y29udGV4dCB2YWx1ZTpub2Rl
T2JqZWN0XTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4oKTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBzaGFkb3dJZChB
ZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKVtlbGVtZW50IF9z
aGFkb3dQc2V1ZG9JZF0pKTsKKyAgICByZXR1cm4gc2hhZG93SWQ7Cit9CisKIGludCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkLCBm
bG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzKQogewogICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaWRDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmlu
ZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBpZCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCA3MDdiM2EzLi45YzliM2JkIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcApAQCAtNzk5LDYgKzc5OSwxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZW1v
dmVTaGFkb3dSb290KGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50KQogICAgIER1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0OjpyZW1vdmVTaGFkb3dSb290KGVsZW1lbnQpOwogfQogCitRU3RyaW5nIExh
eW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZChjb25zdCBRV2ViRWxlbWVudCYgZWxl
bWVudCkKK3sKKyAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNoYWRvd1BzZXVk
b0lkKGVsZW1lbnQpOworfQorCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGVu
ZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKCkKIHsKICAgICBpbnQgcGVuZGluZ1Bl
cm1pc3Npb25Db3VudCA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmgKaW5kZXggZTQ0MDQ4Zi4uYzY2NjUwYiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApAQCAtMjUzLDYgKzI1
Myw3IEBAIHB1YmxpYyBzbG90czoKICAgICBRVmFyaWFudCBzaGFkb3dSb290KGNvbnN0IFFXZWJF
bGVtZW50Jik7CiAgICAgUVZhcmlhbnQgZW5zdXJlU2hhZG93Um9vdChjb25zdCBRV2ViRWxlbWVu
dCYpOwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdChjb25zdCBRV2ViRWxlbWVudCYpOworICAg
IFFTdHJpbmcgc2hhZG93UHNldWRvSWQoY29uc3QgUVdlYkVsZW1lbnQmKTsKIAogICAgIHZvaWQg
ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQoaW50IHdvcmxkSUQsIGNvbnN0IFFTdHJpbmcm
IHNjcmlwdCk7CiAgICAgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlSW5kZXgpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2lu
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5j
cHAKaW5kZXggYWUzY2Q5Ny4uZTBkZjEyMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC0yMjcsNiArMjI3LDMzIEBA
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2VyVGV4
dEZvckxpc3RJdGVtKEpTQ29udGV4dFJlCiAgICAgcmV0dXJuIG1hcmtlclRleHQ7CiB9CiAKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hhZG93UHNldWRv
SWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCkgY29uc3QKK3sK
KyAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CisgICAgaWYgKEZBSUxFRChmcmFtZS0+d2Vi
Vmlldygmd2ViVmlldykpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIENPTVB0cjxJV2ViVmll
d1ByaXZhdGU+IHdlYlZpZXdQcml2YXRlKFF1ZXJ5LCB3ZWJWaWV3KTsKKyAgICBpZiAoIXdlYlZp
ZXdQcml2YXRlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIENPTVB0cjxJRE9NRWxlbWVudD4g
ZWxlbWVudDsKKyAgICBpZiAoRkFJTEVEKHdlYlZpZXdQcml2YXRlLT5lbGVtZW50RnJvbUpTKGNv
bnRleHQsIG5vZGVPYmplY3QsICZlbGVtZW50KSkpCisgICAgICAgIHJldHVybiAwOworCisgICAg
Q09NUHRyPElET01FbGVtZW50UHJpdmF0ZT4gZWxlbWVudFByaXZhdGUoUXVlcnksIGVsZW1lbnQp
OworICAgIGlmICghZWxlbWVudFByaXZhdGUpCisgICAgICAgIHJldHVybiAwOworCisgICAgQlNU
UiBpZEJTVFIgPSAwOworICAgIGlmIChGQUlMRUQoZWxlbWVudFByaXZhdGUtPnNoYWRvd1BzZXVk
b0lkKCZpZEJTVFIpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gaWQoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aEJTVFIoaWRCU1RSKSk7CisgICAg
U3lzRnJlZVN0cmluZyhpZEJTVFIpOworICAgIHJldHVybiBpZDsKK30KKwogdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKCkKIHsKICAgICBDT01QdHI8SVdl
YlZpZXc+IHdlYlZpZXc7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlv
dXRUZXN0Q29udHJvbGxlcld4LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRl
c3RDb250cm9sbGVyV3guY3BwCmluZGV4IDFhZDM1OWUuLjE4ZWYxNTAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCkBAIC01MDgs
NiArNTA4LDExIEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6bWFya2VyVGV4dEZvckxpc3RJdGVtKEpTQ29udGV4dFJlCiAgICAgcmV0dXJuIDA7CiB9CiAK
K0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hhZG93UHNl
dWRvSWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCkgY29uc3QK
K3sKKyAgICByZXR1cm4gMDsKK30KKwogSlNWYWx1ZVJlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJl
ZikKIHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJv
bGxlci5pZGwKaW5kZXggZDU5M2QzZi4uY2M0YzQ0YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5p
ZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9M
YXlvdXRUZXN0Q29udHJvbGxlci5pZGwKQEAgLTY2LDYgKzY2LDcgQEAgbW9kdWxlIFdUUiB7CiAg
ICAgICAgIG9iamVjdCBzaGFkb3dSb290KGluIG9iamVjdCBlbGVtZW50KTsKICAgICAgICAgb2Jq
ZWN0IGVuc3VyZVNoYWRvd1Jvb3QoaW4gb2JqZWN0IGVsZW1lbnQpOwogICAgICAgICB2b2lkIHJl
bW92ZVNoYWRvd1Jvb3QoaW4gb2JqZWN0IGVsZW1lbnQpOworICAgICAgICBET01TdHJpbmcgc2hh
ZG93UHNldWRvSWQoaW4gb2JqZWN0IGVsZW1lbnQpOwogCiAgICAgICAgIC8vIFJlcGFpbnQgdGVz
dGluZy4KICAgICAgICAgdm9pZCB0ZXN0UmVwYWludCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAppbmRleCA4Yjk3NTcyLi4wYjFhNjA3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cApAQCAtNDIzLDYgKzQyMywyNCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpyZW1vdmVT
aGFkb3dSb290KEpTVmFsdWVSZWYgZWxlbWVudCkKICAgICBXS0J1bmRsZU5vZGVIYW5kbGVSZW1v
dmVTaGFkb3dSb290KGRvbUVsZW1lbnQuZ2V0KCkpOwogfQogCitKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNoYWRvd1BzZXVkb0lkKEpTVmFsdWVSZWYgZWxl
bWVudCkgY29uc3QKK3sKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxl
UGFnZUdldE1haW5GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkp
OworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRD
b250ZXh0KG1haW5GcmFtZSk7CisKKyAgICBpZiAoIWVsZW1lbnQgfHwgIUpTVmFsdWVJc09iamVj
dChjb250ZXh0LCBlbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBXS1JldGFpblB0
cjxXS0J1bmRsZU5vZGVIYW5kbGVSZWY+IGRvbUVsZW1lbnQgPSBhZG9wdFdLKFdLQnVuZGxlTm9k
ZUhhbmRsZUNyZWF0ZShjb250ZXh0LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihlbGVtZW50KSkp
OworICAgIGlmICghZG9tRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gaWQoQWRvcHRXSywgV0tCdW5kbGVOb2RlSGFuZGxlU2hhZG93UHNl
dWRvSWQoZG9tRWxlbWVudC5nZXQoKSkpOworICAgIGlmIChXS1N0cmluZ0lzRW1wdHkoaWQuZ2V0
KCkpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdG9KUyhpZCk7Cit9CisKIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQmFja0ZvcndhcmRMaXN0KCkKIHsKICAgICBXS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdENsZWFyKFdLQnVuZGxlUGFnZUdldEJhY2tGb3J3YXJkTGlzdChJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAppbmRleCA1Mzk3NjE3Li5iYThhMjc1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CkBAIC05NSw2ICs5NSw3IEBAIHB1YmxpYzoKICAgICBKU1ZhbHVlUmVmIHNoYWRvd1Jvb3QoSlNW
YWx1ZVJlZiBlbGVtZW50KTsKICAgICBKU1ZhbHVlUmVmIGVuc3VyZVNoYWRvd1Jvb3QoSlNWYWx1
ZVJlZiBlbGVtZW50KTsKICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoSlNWYWx1ZVJlZiBlbGVt
ZW50KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2hhZG93UHNldWRvSWQoSlNWYWx1
ZVJlZikgY29uc3Q7CiAKICAgICAvLyBSZXBhaW50IHRlc3RpbmcuCiAgICAgdm9pZCB0ZXN0UmVw
YWludCgpIHsgbV90ZXN0UmVwYWludCA9IHRydWU7IH0KLS0gCjEuNy40LjQ=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92389</attachid>
            <date>2011-05-05 02:03:14 -0700</date>
            <delta_ts>2011-05-05 03:02:07 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>33598</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA0MjFkMzFlMzc5ZTU0MzQ1YjVlMmJhZWM0Y2M3YWFkNjc4MmM4ZjQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDMgTWF5IDIwMTEgMjA6MDI6MzEgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
cm9wb3NlZCBwYXRjaAoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTAgKysrKysrCiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250
cm9scy10cmFuc2Zvcm1lZC5odG1sICB8ICAgMTQgKysrKystLS0KIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgIHwgICAxMSArKysrKysKIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkVsZW1lbnQuaCAgICAgICAgIHwgICAgMSArCiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFbGVtZW50LmNwcCAgICAgICAgICB8ICAgIDUgKysr
CiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTEgKysrKysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNw
cCAgICB8ICAgMTAgKysrKysrCiAuLi4vZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0ay5oICB8ICAgIDEgKwogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDExICsrKysrKwogU291cmNlL1dlYktpdC9tYWMvRE9NL1dl
YkRPTU9wZXJhdGlvbnMubW0gICAgICAgICAgfCAgICA1ICsrKwogU291cmNlL1dlYktpdC9tYWMv
RE9NL1dlYkRPTU9wZXJhdGlvbnNQcml2YXRlLmggICAgfCAgICAxICsKIFNvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArKysrKysKIC4uLi9x
dC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAgIHwgICAgOSArKysr
KwogLi4uL3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmggICAgfCAg
ICAxICsKIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxMSArKysrKysKIFNvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcCAgICAg
ICAgICAgICAgIHwgICAxMiArKysrKysrCiBTb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nl
cy5oICAgICAgICAgICAgICAgICB8ICAgIDMgKysKIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFj
ZXMvRE9NUHJpdmF0ZS5pZGwgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTUgKysrKysrKysrCiAuLi4vSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcCAgICB8ICAgIDUgKysrCiAuLi4v
QVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlUHJpdmF0ZS5oICAgICAgICAgICAgICB8ICAgIDEgKwog
Li4uL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwICAgICAgICAgICAgICAgfCAgICA4
ICsrKysrCiAuLi4vSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5o
ICB8ICAgIDEgKwogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDM0ICsrKysrKysrKysrKysrKysrKysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAgICAgICB8ICAgMTEgKysrKysrCiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oICAgICAgICB8ICAgIDEgKwogLi4uL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCAgICAgICAgICAgICAgfCAgIDEwICsrKysrKwog
Li4uL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggfCAgICAx
ICsKIC4uLi9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIHwg
ICAxMCArKysrKysKIC4uLi9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW0gIHwgICAxMCArKysrKysKIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuY3BwIHwgICAgNSArKysKIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuaCAgIHwgICAgMSArCiAuLi4vRHVtcFJlbmRlclRyZWUvd2luL0xh
eW91dFRlc3RDb250cm9sbGVyV2luLmNwcCB8ICAgMjcgKysrKysrKysrKysrKysrCiBUb29scy9E
dW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCB8ICAgIDUgKysrCiAu
Li4vQmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsICAgICAgICAgICAgICB8ICAgIDEg
KwogLi4uL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCAgICAgICAgfCAg
IDE4ICsrKysrKysrKysKIC4uLi9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
ICAgICAgICAgIHwgICAgMSArCiAzNyBmaWxlcyBjaGFuZ2VkLCAyODggaW5zZXJ0aW9ucygrKSwg
NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWExYTQ2OS4uZmRlMzNlYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDExLTA1LTA0ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBs
ZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBzZXVkb1NoYWRvd0lkKCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMDM0CisKKyAgICAgICAgKiBt
ZWRpYS92aWRlby1jb250cm9scy10cmFuc2Zvcm1lZC5odG1sOiBSZWZhY3RvcmVkIHRvIHVzZSB0
aGUKKyAgICAgICAgcHNldWRvU2hhZG93SWQoKSBMYXlvdXRUZXN0Q29udHJvbGxlciBtZXRob2Qu
CisKIDIwMTEtMDUtMDUgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjg1ODE3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtdHJhbnNmb3JtZWQuaHRtbCBiL0xheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLWNvbnRyb2xzLXRyYW5zZm9ybWVkLmh0bWwKaW5kZXggMTZlZWU4YS4uMDIw
Y2UwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtdHJhbnNm
b3JtZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy10cmFuc2Zv
cm1lZC5odG1sCkBAIC0xOSwxMSArMTksMTUgQEAKICAgICAgICAgd2FpdEZvckV2ZW50KCdjYW5w
bGF5dGhyb3VnaCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKICAgICAgICAgICAgICAgICAvLyBGaW5kIHRoZSBwbGF5IGJ1dHRvbiBhbmQgY2xp
Y2sgdGhlIG1pZGRsZSBvZiBpdHMgYm91bmRpbmcgYm94LgotICAgICAgICAgICAgICAgIC8vIFRo
aXMgYXBwcm9hY2ggaGFyZC1jb2RlcyB0aGUgY29uc3RydWN0aW9uIG9yZGVyIG9mIHRoZSBtZWRp
YQotICAgICAgICAgICAgICAgIC8vIGNvbnRyb2xzLCB3aGljaCBpcyB1Z2x5LCBidXQgc2FkbHkg
aXMgYWxzbyBjdXJyZW50bHkgdGhlIG9ubHkKLSAgICAgICAgICAgICAgICAvLyB3YXkgdG8gZG8g
aXQuCi0gICAgICAgICAgICAgICAgLy8gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTg1ODQgaXMgdHJhY2tpbmcgZml4aW5nIHRoYXQuCi0gICAgICAgICAgICAgICAgdmFy
IHBsYXlCdXR0b24gPSBsYXlvdXRUZXN0Q29udHJvbGxlci5zaGFkb3dSb290KHZpZGVvKS5maXJz
dENoaWxkLmZpcnN0Q2hpbGQuY2hpbGRyZW5bMV07CisgICAgICAgICAgICAgICAgdmFyIHBsYXlC
dXR0b247CisgICAgICAgICAgICAgICAgdmFyIGNvbnRyb2xzU2hhZG93ID0gbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2hhZG93Um9vdCh2aWRlbykuZmlyc3RDaGlsZC5maXJzdENoaWxkOworICAgICAg
ICAgICAgICAgIGZvciAoY2hpbGQgPSBjb250cm9sc1NoYWRvdy5maXJzdENoaWxkOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC5uZXh0U2libGluZykgeworICAgICAgICAgICAgICAgICAgICAgaWYgKGxh
eW91dFRlc3RDb250cm9sbGVyLnNoYWRvd1BzZXVkb0lkKGNoaWxkKSA9PSAiLXdlYmtpdC1tZWRp
YS1jb250cm9scy1wbGF5LWJ1dHRvbiIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5
QnV0dG9uID0gY2hpbGQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgaWYg
KCFwbGF5QnV0dG9uKSB7CiAgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJGYWlsZWQgdG8g
ZmluZCBwbGF5L3BhdXNlIGJ1dHRvbi4iKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IDNjMWNjNTIuLjFiMDA2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDUtMDQgIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cHNldWRvU2hhZG93
SWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAw
MzQKKworICAgICAgICAqIHB1YmxpYy9XZWJFbGVtZW50Lmg6CisgICAgICAgICogc3JjL1dlYkVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCk6
CisKIDIwMTEtMDUtMDMgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTdGV2ZSBCbG9jay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkVsZW1lbnQuaAppbmRleCA1M2I2YWEzLi4wMjRkYjZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRWxlbWVudC5oCkBAIC02Miw2ICs2Miw3IEBAIGNsYXNzIFdl
Yk5hbWVkTm9kZU1hcDsKICAgICAgICAgV0VCS0lUX0FQSSBXZWJOb2RlIHNoYWRvd1Jvb3QoKTsK
ICAgICAgICAgV0VCS0lUX0FQSSBXZWJOb2RlIGVuc3VyZVNoYWRvd1Jvb3QoKTsKICAgICAgICAg
V0VCS0lUX0FQSSB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoKTsKKyAgICAgICAgV0VCS0lUX0FQSSBX
ZWJTdHJpbmcgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKIAogICAgICAgICAvLyBSZXR1cm5zIHRo
ZSBsYW5ndWFnZSBjb2RlIHNwZWNpZmllZCBmb3IgdGhpcyBlbGVtZW50LiAgVGhpcyBhdHRyaWJ1
dGUKICAgICAgICAgLy8gaXMgaW5oZXJpdGVkLCBzbyB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgZHJh
d24gZnJvbSB0aGUgY2xvc2VzdCBwYXJlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RWxlbWVudC5jcHAKaW5kZXggMzYxYmZlZS4uN2U4NTFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRWxlbWVudC5jcHAKQEAgLTEwNiw2ICsxMDYsMTEgQEAgdm9pZCBXZWJFbGVt
ZW50OjpyZW1vdmVTaGFkb3dSb290KCkKICAgICB1bndyYXA8RWxlbWVudD4oKS0+cmVtb3ZlU2hh
ZG93Um9vdCgpOwogfQogCitXZWJTdHJpbmcgV2ViRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBj
b25zdAoreworICAgIHJldHVybiBXZWJTdHJpbmcoY29uc3RVbndyYXA8RWxlbWVudD4oKS0+c2hh
ZG93UHNldWRvSWQoKS5zdHJpbmcoKSk7Cit9CisKIFdlYlN0cmluZyBXZWJFbGVtZW50Ojpjb21w
dXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSBjb25zdAogewogICAgIHJldHVybiBXZWJTdHJpbmcoY29u
c3RVbndyYXA8RWxlbWVudD4oKS0+Y29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCmluZGV4IDdlNTRiZWUuLjFiMTU0MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMS0wNS0wNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjpwc2V1ZG9TaGFkb3dJZCgpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAzNAorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcDoKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgorCiAyMDExLTA1LTA0ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEdUSyBidWlsZCBmaXggYXR0
ZW1wdCBhZnRlciByODU4MjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4IDI5MDNjZWUu
LjUzMGRmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApAQCAtNDE2LDYgKzQxNiwxNiBA
QCBDU3RyaW5nIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bWFya2VyVGV4dEZvckxpc3RJdGVt
KFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgSgogICAgIHJldHVybiBXZWJDb3JlOjptYXJrZXJUZXh0
Rm9yTGlzdEl0ZW0oZWxlbWVudCkudXRmOCgpOwogfQogCitDU3RyaW5nIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6c2hhZG93UHNldWRvSWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgbm9kZU9iamVjdCkKK3sKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4
dCk7CisgICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudCh0b0pTKGV4ZWMsIG5vZGVPYmpl
Y3QpKTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisKKyAg
ICByZXR1cm4gZWxlbWVudC0+c2hhZG93UHNldWRvSWQoKS5zdHJpbmcoKS51dGY4KCk7Cit9CisK
IHVuc2lnbmVkIGludCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Om51bWJlck9mQWN0aXZlQW5p
bWF0aW9ucyhXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAppbmRleCBkN2Q3MTdjLi4zMzhiYjQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaApAQCAtODEsNiArODEsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgcGF1c2VUcmFuc2l0aW9uKFdlYktpdFdlYkZyYW1lKiwgY29uc3QgY2hhciog
bmFtZSwgZG91YmxlIHRpbWUsIGNvbnN0IGNoYXIqIGVsZW1lbnQpOwogICAgIHN0YXRpYyBib29s
IHBhdXNlU1ZHQW5pbWF0aW9uKFdlYktpdFdlYkZyYW1lKiwgY29uc3QgY2hhciogYW5pbWF0aW9u
SWQsIGRvdWJsZSB0aW1lLCBjb25zdCBjaGFyKiBlbGVtZW50SWQpOwogICAgIHN0YXRpYyBXVEY6
OkNTdHJpbmcgbWFya2VyVGV4dEZvckxpc3RJdGVtKFdlYktpdFdlYkZyYW1lKiwgSlNDb250ZXh0
UmVmLCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QpOworICAgIHN0YXRpYyBXVEY6OkNTdHJpbmcgc2hh
ZG93UHNldWRvSWQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QpOwogICAgIHN0
YXRpYyB1bnNpZ25lZCBpbnQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKFdlYktpdFdlYkZyYW1l
Kik7CiAgICAgc3RhdGljIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqKTsK
ICAgICBzdGF0aWMgdm9pZCByZXN1bWVBbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKaW5kZXggY2MwNDBhMi4uZjllMzNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDExLTA1LTA0ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBzZXVkb1NoYWRvd0lkKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMDM0CisKKyAgICAgICAg
KiBET00vV2ViRE9NT3BlcmF0aW9ucy5tbToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBfc2hhZG93
UHNldWRvSWRdKToKKyAgICAgICAgKiBET00vV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaDoKKwog
MjAxMS0wNS0wNCAgQ3JpcyBOZWNrYXIgIDxjZG5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00v
V2ViRE9NT3BlcmF0aW9ucy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRp
b25zLm1tCmluZGV4IGY1ZDNjYWIuLjJlOGVlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0RPTS9XZWJET01PcGVyYXRpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9X
ZWJET01PcGVyYXRpb25zLm1tCkBAIC03NSw2ICs3NSwxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogICAgIHJldHVybiBXZWJDb3JlOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oY29yZShzZWxmKSk7
CiB9CiAKKy0gKE5TU3RyaW5nICopX3NoYWRvd1BzZXVkb0lkCit7CisgICAgcmV0dXJuIGNvcmUo
c2VsZiktPnNoYWRvd1BzZXVkb0lkKCk7Cit9CisKIC0gKEpTVmFsdWVSZWYpX3NoYWRvd1Jvb3Q6
KEpTQ29udGV4dFJlZiljb250ZXh0CiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlv
bnNPbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRp
b25zUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnNQcml2
YXRlLmgKaW5kZXggYjM1YWYxZC4uZjA0MTk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvRE9NL1dlYkRPTU9wZXJhdGlvbnNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
RE9NL1dlYkRPTU9wZXJhdGlvbnNQcml2YXRlLmgKQEAgLTM1LDYgKzM1LDcgQEAKIC0gKEpTVmFs
dWVSZWYpX3NoYWRvd1Jvb3Q6KEpTQ29udGV4dFJlZiljb250ZXh0OwogLSAoSlNWYWx1ZVJlZilf
ZW5zdXJlU2hhZG93Um9vdDooSlNDb250ZXh0UmVmKWNvbnRleHQ7CiAtICh2b2lkKV9yZW1vdmVT
aGFkb3dSb290OworLSAoTlNTdHJpbmcgKilfc2hhZG93UHNldWRvSWQ7CiBAZW5kCiAKIEBpbnRl
cmZhY2UgRE9NRG9jdW1lbnQgKFdlYkRPTURvY3VtZW50T3BlcmF0aW9uc1ByaXZhdGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCmluZGV4IDE2MGEwMjkuLmZkNzA1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTEtMDUtMDQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxl
bWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cHNldWRvU2hhZG93SWQoKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAwMzQKKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoKKwogMjAxMS0wNS0wNCAgQ3JpcyBOZWNr
YXIgIDxjZG5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGgu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwCmluZGV4IDlmYTQzMjQuLmU2MDYxYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQuY3BwCkBAIC0xMTA5LDYgKzExMDksMTUgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6cmVtb3ZlU2hhZG93Um9vdChjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCkKICAg
ICB3ZWJFbGVtZW50LT5yZW1vdmVTaGFkb3dSb290KCk7CiB9CiAKK1FTdHJpbmcgRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OnNoYWRvd1BzZXVkb0lkKGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50
KQoreworICAgIFdlYkNvcmU6OkVsZW1lbnQqIHdlYkVsZW1lbnQgPSBlbGVtZW50Lm1fZWxlbWVu
dDsKKyAgICBRU3RyaW5nIHBzZXVkb0lkOworICAgIGlmICh3ZWJFbGVtZW50KQorICAgICAgICBw
c2V1ZG9JZCA9IHdlYkVsZW1lbnQtPnNoYWRvd1BzZXVkb0lkKCkuc3RyaW5nKCk7CisgICAgcmV0
dXJuIHBzZXVkb0lkOworfQorCiAvLyBQcm92aWRlIGEgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3
aXRoIHByZXZpb3VzbHkgZXhwb3J0ZWQgcHJpdmF0ZSBzeW1ib2xzIGFzIG9mIFF0V2ViS2l0IDQu
NiByZWxlYXNlCiAKIHZvaWQgUVdFQktJVF9FWFBPUlQgcXRfcmVzdW1lQWN0aXZlRE9NT2JqZWN0
cyhRV2ViRnJhbWUqIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCmluZGV4IGQ0MGUwOTYuLmMwMjdk
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKQEAgLTIwNSw2ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFFWYXJpYW50IHNoYWRvd1Jvb3QoY29uc3QgUVdlYkVsZW1lbnQmKTsKICAgICBzdGF0
aWMgUVZhcmlhbnQgZW5zdXJlU2hhZG93Um9vdChjb25zdCBRV2ViRWxlbWVudCYpOwogICAgIHN0
YXRpYyB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoY29uc3QgUVdlYkVsZW1lbnQmKTsKKyAgICBzdGF0
aWMgUVN0cmluZyBzaGFkb3dQc2V1ZG9JZChjb25zdCBRV2ViRWxlbWVudCYpOwogfTsKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZjRlMzY5NS4uZGJiYmJhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA1LTA0ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBzZXVkb1NoYWRvd0lkKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMDM0CisK
KyAgICAgICAgKiBET01Db3JlQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01FbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCk6CisgICAgICAgICogRE9NQ29yZUNsYXNzZXMuaDoKKwogMjAxMS0wNS0wNCAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBXaW5kb3dzIGJ1aWxk
IGZpeCBhdHRlbXB0IGFmdGVyIHI4NTgyMwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
RE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3Bw
CmluZGV4IDcxMzc0NDkuLmM3NjZjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RP
TUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5j
cHAKQEAgLTExNjAsNiArMTE2MCwxOCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVs
ZW1lbnQ6Om1hcmtlclRleHRGb3JMaXN0SXRlbSgKICAgICByZXR1cm4gU19PSzsKIH0KIAorSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgKKyAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKK3sKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAgIEFTU0VSVChtX2VsZW1lbnQpOworCisgICAg
KnJlc3VsdCA9IEJTdHJpbmcobV9lbGVtZW50LT5zaGFkb3dQc2V1ZG9JZCgpLnN0cmluZygpKS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKIC8vIElET01FbGVtZW50Q1NTSW5saW5l
U3R5bGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpzdHlsZSggCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5oIGIvU291cmNlL1dlYktpdC93
aW4vRE9NQ29yZUNsYXNzZXMuaAppbmRleCBjNTJkOTMzLi41ZGNiNDVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0RPTUNvcmVDbGFzc2VzLmgKQEAgLTc3OSw2ICs3NzksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1hcmtlclRleHRGb3JMaXN0SXRlbSgKICAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBtYXJrZXJUZXh0KTsKIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzaGFkb3dQc2V1ZG9JZCgKKyAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpOworCiAgICAgLy8gSURPTUVsZW1lbnRDU1NJbmxp
bmVTdHlsZQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdHlsZSgKICAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbioqIHJlc3Vs
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0RPTVByaXZhdGUu
aWRsIGIvU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9ET01Qcml2YXRlLmlkbAppbmRleCBj
M2JiNjBlLi4yODhmOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L0RPTVByaXZhdGUuaWRsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvRE9NUHJp
dmF0ZS5pZGwKQEAgLTQ4LDYgKzQ4LDcgQEAgaW50ZXJmYWNlIElET01FbGVtZW50UHJpdmF0ZSA6
IElVbmtub3duCiAgICAgW2xvY2FsXSBIUkVTVUxUIGZvbnQoV2ViRm9udERlc2NyaXB0aW9uKiB3
ZWJGb250RGVzY3JpcHRpb24pOwogICAgIEhSRVNVTFQgcmVuZGVyZWRJbWFnZShbb3V0LCByZXR2
YWxdIEhCSVRNQVAqIGltYWdlKTsKICAgICBbbG9jYWxdIEhSRVNVTFQgbWFya2VyVGV4dEZvckxp
c3RJdGVtKFtvdXQsIHJldHZhbF0gQlNUUiogbWFya2VyVGV4dCk7CisgICAgW2xvY2FsXSBIUkVT
VUxUIHNoYWRvd1BzZXVkb0lkKFtvdXQsIHJldHZhbF0gQlNUUiogcmVzdWx0KTsKIH0KIAogLyoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5ZWUxODExLi5iYWRhYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMDUtMDUgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cHNldWRvU2hhZG93SWQoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAwMzQKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAg
ICAgKFdLQnVuZGxlTm9kZUhhbmRsZVNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZVByaXZhdGUuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmVs
ZW1lbnRSZW1vdmVTaGFkb3dSb290KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlOjplbGVtZW50U2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oOgorCiAyMDExLTA1
LTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLiBGaXggV2ViS2l0MiBHVEsgYnVpbGQgYWZ0ZXIgcjg1ODA4LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZU5vZGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwCmluZGV4IDYwZjk3MGUuLmQwMGE5ZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAKQEAgLTc4LDYgKzc4
LDExIEBAIHZvaWQgV0tCdW5kbGVOb2RlSGFuZGxlUmVtb3ZlU2hhZG93Um9vdChXS0J1bmRsZU5v
ZGVIYW5kbGVSZWYgZWxlbWVudEhhbmRsZVJlZikKICAgICB0b0ltcGwoZWxlbWVudEhhbmRsZVJl
ZiktPmVsZW1lbnRSZW1vdmVTaGFkb3dSb290KCk7CiB9CiAKK1dLU3RyaW5nUmVmIFdLQnVuZGxl
Tm9kZUhhbmRsZVNoYWRvd1BzZXVkb0lkKFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBlbGVtZW50SGFu
ZGxlUmVmKQoreworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoZWxlbWVudEhhbmRsZVJl
ZiktPmVsZW1lbnRTaGFkb3dQc2V1ZG9JZCgpKTsKK30KKwogdm9pZCBXS0J1bmRsZU5vZGVIYW5k
bGVTZXRIVE1MSW5wdXRFbGVtZW50VmFsdWVGb3JVc2VyKFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBo
dG1sSW5wdXRFbGVtZW50SGFuZGxlUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZVJlZikKIHsKICAgICB0
b0ltcGwoaHRtbElucHV0RWxlbWVudEhhbmRsZVJlZiktPnNldEhUTUxJbnB1dEVsZW1lbnRWYWx1
ZUZvclVzZXIodG9XVEZTdHJpbmcodmFsdWVSZWYpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZU5vZGVIYW5kbGVQcml2YXRlLmgKaW5kZXggMzk5YjA5NC4uZGI2YThiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZU5vZGVIYW5kbGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGVQcml2YXRlLmgKQEAgLTQ5LDYg
KzQ5LDcgQEAgV0tfRVhQT1JUIFdLUmVjdCBXS0J1bmRsZU5vZGVIYW5kbGVHZXRFbGVtZW50Qm91
bmRzKFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBlbGVtZW4KIFdLX0VYUE9SVCBXS0J1bmRsZU5vZGVI
YW5kbGVSZWYgV0tCdW5kbGVOb2RlSGFuZGxlQ29weUVsZW1lbnRTaGFkb3dSb290KFdLQnVuZGxl
Tm9kZUhhbmRsZVJlZiBlbGVtZW50SGFuZGxlKTsKIFdLX0VYUE9SVCBXS0J1bmRsZU5vZGVIYW5k
bGVSZWYgV0tCdW5kbGVOb2RlSGFuZGxlQ29weUVsZW1lbnRFbnN1cmVTaGFkb3dSb290KFdLQnVu
ZGxlTm9kZUhhbmRsZVJlZiBlbGVtZW50SGFuZGxlKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
Tm9kZUhhbmRsZVJlbW92ZVNoYWRvd1Jvb3QoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1lbnRI
YW5kbGUpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlTm9kZUhhbmRsZVNoYWRvd1Bz
ZXVkb0lkKFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBlbGVtZW50SGFuZGxlKTsKIAogLyogSFRNTElu
cHV0RWxlbWVudCBTcGVjaWZpYyBPcGVyYXRpb25zICovCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRs
ZU5vZGVIYW5kbGVTZXRIVE1MSW5wdXRFbGVtZW50VmFsdWVGb3JVc2VyKFdLQnVuZGxlTm9kZUhh
bmRsZVJlZiBodG1sSW5wdXRFbGVtZW50SGFuZGxlLCBXS1N0cmluZ1JlZiB2YWx1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAppbmRleCA4ZjczZGJm
Li5mN2U0MjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZS5jcHAKQEAgLTE5MCw2ICsxOTAsMTQgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6
OmVsZW1lbnRSZW1vdmVTaGFkb3dSb290KCkKICAgICBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9u
b2RlLmdldCgpKS0+cmVtb3ZlU2hhZG93Um9vdCgpOwogfQogCitTdHJpbmcgSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlOjplbGVtZW50U2hhZG93UHNldWRvSWQoKQoreworICAgIGlmICghbV9ub2Rl
LT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obV9ub2RlLmdldCgpKS0+c2hhZG93UHNldWRvSWQoKTsK
K30KKwogUGFzc1JlZlB0cjxXZWJGcmFtZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpkb2N1
bWVudEZyYW1lKCkKIHsKICAgICBpZiAoIW1fbm9kZS0+aXNEb2N1bWVudE5vZGUoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlTm9kZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgKaW5kZXggYWY4ZWViMy4uYWUx
MTZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgKQEAg
LTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlPiBlbGVtZW50U2hhZG93Um9vdCgpOwogICAgIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlPiBlbGVtZW50RW5zdXJlU2hhZG93Um9vdCgpOwogICAgIHZvaWQgZWxlbWVu
dFJlbW92ZVNoYWRvd1Jvb3QoKTsKKyAgICBTdHJpbmcgZWxlbWVudFNoYWRvd1BzZXVkb0lkKCk7
CiAKICAgICBQYXNzUmVmUHRyPFdlYkZyYW1lPiBkb2N1bWVudEZyYW1lKCk7CiAgICAgUGFzc1Jl
ZlB0cjxXZWJGcmFtZT4gaHRtbEZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSgpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIwMzFkMzIuLmNhMjIy
NTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNyBAQAorMjAxMS0wNS0wNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGln
YWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjpwc2V1ZG9TaGFkb3dJZCgpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAzNAorCisgICAg
ICAgIHNoYWRvd1BzZXVkb0lkIHN1cHBvcnQgaW4gdGhlIHZhcmlvdXMgTGF5b3V0VGVzdENvbnRy
b2xsZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2hhZG93UHNldWRvSWRDYWxs
YmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5
b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlv
dXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RD
b250cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNoYWRvd1Bz
ZXVkb0lkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisKIDIwMTEt
MDUtMDQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKaW5kZXggNGNhOTBkOC4uNjlhNGM4MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMjA4Niw2ICsyMDg2LDE2IEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIHNldFNlcmlhbGl6ZUhUVFBMb2Fkc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzaGFkb3dQc2V1ZG9JZENhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU09iamVjdFJlZiwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIExheW91dFRlc3RDb250
cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihK
U09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtl
U3RyaW5nKGNvbnRleHQsIGNvbnRyb2xsZXItPnNoYWRvd1BzZXVkb0lkKGNvbnRleHQsIGFyZ3Vt
ZW50c1swXSkuZ2V0KCkpOworfQorCiAvLyBTdGF0aWMgVmFsdWVzCiAKIHN0YXRpYyBKU1ZhbHVl
UmVmIGdldEdsb2JhbEZsYWdDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCkBAIC0yMzMwLDYgKzIzNDAsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAiZGVsZXRlTG9jYWxTdG9y
YWdlRm9yT3JpZ2luIiwgZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2luQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAib3JpZ2luc1dpdGhMb2NhbFN0b3JhZ2UiLCBvcmlnaW5zV2l0aExvY2Fs
U3RvcmFnZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFNob3VsZFBhaW50QnJva2Vu
SW1hZ2UiLCBzZXRTaG91bGRQYWludEJyb2tlbkltYWdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAg
ICAgeyAic2hhZG93UHNldWRvSWQiLCBzaGFkb3dQc2V1ZG9JZENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgMCwgMCwgMCB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmgKaW5kZXggYTMxZTkwOC4uYTgxNzllMSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC03NSw2ICs3NSw3IEBAIHB1Ymxp
YzoKICAgICBpbnQgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkKEpTU3RyaW5nUmVmIGlkLCBmbG9h
dCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzKTsKICAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gcGFnZVByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFt
ZSwgaW50IHBhZ2VOdW1iZXIpIGNvbnN0OwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBw
YWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZU51bWJlciwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0LCBpbnQgbWFyZ2luVG9wLCBpbnQgbWFyZ2luUmlnaHQsIGludCBtYXJnaW5Cb3R0b20s
IGludCBtYXJnaW5MZWZ0KSBjb25zdDsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gc2hh
ZG93UHNldWRvSWQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKSBjb25zdDsKICAgICBib29sIGlz
UGFnZUJveFZpc2libGUoaW50IHBhZ2VOdW1iZXIpIGNvbnN0OwogICAgIEpTU3RyaW5nUmVmIHBh
dGhUb0xvY2FsUmVzb3VyY2UoSlNDb250ZXh0UmVmLCBKU1N0cmluZ1JlZiB1cmwpOwogICAgIHZv
aWQgcXVldWVCYWNrTmF2aWdhdGlvbihpbnQgaG93RmFyQmFja3dhcmQpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IGVlOGQ1YWMuLjY0NTBhZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTE3Niw2ICsxNzYsNyBAQCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoVGVzdFNoZWxsKiBzaGVs
bCkKICAgICBiaW5kTWV0aG9kKCJzZXRYU1NBdWRpdG9yRW5hYmxlZCIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0WFNTQXVkaXRvckVuYWJsZWQpOwogICAgIGJpbmRNZXRob2QoInNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRB
c3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgic2hhZG93
Um9vdCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hhZG93Um9vdCk7CisgICAgYmluZE1ldGhv
ZCgic2hhZG93UHNldWRvSWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNoYWRvd1BzZXVkb0lk
KTsKICAgICBiaW5kTWV0aG9kKCJzaG93V2ViSW5zcGVjdG9yIiwgJkxheW91dFRlc3RDb250cm9s
bGVyOjpzaG93V2ViSW5zcGVjdG9yKTsKICAgICBiaW5kTWV0aG9kKCJzaW11bGF0ZURlc2t0b3BO
b3RpZmljYXRpb25DbGljayIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2ltdWxhdGVEZXNrdG9w
Tm90aWZpY2F0aW9uQ2xpY2spOwogICAgIGJpbmRNZXRob2QoInN1c3BlbmRBbmltYXRpb25zIiwg
JkxheW91dFRlc3RDb250cm9sbGVyOjpzdXNwZW5kQW5pbWF0aW9ucyk7CkBAIC03MTAsNiArNzEx
LDE1IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZVNoYWRvd1Jvb3QoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwCiAgICAgZWxlbWVudC5yZW1vdmVTaGFkb3dS
b290KCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNoYWRvd1BzZXVkb0lkKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7Cisg
ICAgV2ViRWxlbWVudCBlbGVtZW50OworICAgIGlmICghV2ViQmluZGluZ3M6OmdldEVsZW1lbnQo
YXJndW1lbnRzWzBdLnZhbHVlLm9iamVjdFZhbHVlLCAmZWxlbWVudCkpCisgICAgICAgIHJlc3Vs
dC0+c2V0TnVsbCgpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0LT5zZXQoZWxlbWVudC5zaGFk
b3dQc2V1ZG9JZCgpLnV0ZjgoKSk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNo
b3dXZWJJbnNwZWN0b3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0
KQogewogICAgIG1fc2hlbGwtPnNob3dEZXZUb29scygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNDRhYzJjZC4u
MzNjZmFhYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCkBAIC0yNzQsNiArMjc0LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2hhZG93Um9vdChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9p
ZCBlbnN1cmVTaGFkb3dSb290KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
ICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOworICAgIHZvaWQgc2hhZG93UHNldWRvSWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOwogCiAgICAgLy8gVGhlIGZhbGxiYWNrIG1ldGhvZCBpcyBjYWxsZWQgd2hl
biBhIG5vbmV4aXN0ZW50IG1ldGhvZCBpcyBjYWxsZWQgb24KICAgICAvLyB0aGUgbGF5b3V0IHRl
c3QgY29udHJvbGxlciBvYmplY3QuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCA2MTdhMDhmLi4yYTQzOTdlIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0
ay5jcHAKQEAgLTkwNSw2ICs5MDUsMTYgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91
dFRlc3RDb250cm9sbGVyOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oSlNDb250ZXh0UmUKICAgICBy
ZXR1cm4gbWFya2VyVGV4dDsKIH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRl
c3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1
ZVJlZiBub2RlT2JqZWN0KSBjb25zdAoreworICAgIENTdHJpbmcgaWQgPSBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGs6OnNoYWRvd1BzZXVkb0lkKGNvbnRleHQsIG5vZGVPYmplY3QpOworICAgIGlm
IChpZC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gcmVzdWx0KEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhpZC5k
YXRhKCkpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjphdXRoZW50aWNhdGVTZXNzaW9uKEpTU3RyaW5nUmVmLCBKU1N0cmluZ1JlZiwgSlNTdHJp
bmdSZWYpCiB7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0KaW5kZXggZTg1YTc3Yy4uZjRlOTQ4MCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMjc5
LDYgKzI3OSwxNiBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xs
ZXI6Om1hcmtlclRleHRGb3JMaXN0SXRlbShKU0NvbnRleHRSZQogICAgIHJldHVybiBtYXJrZXJU
ZXh0OwogfQogCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNoYWRvd1BzZXVkb0lkKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmpl
Y3QpIGNvbnN0Cit7CisgICAgRE9NRWxlbWVudCAqZWxlbWVudCA9IFtET01FbGVtZW50IF9ET01F
bGVtZW50RnJvbUpTQ29udGV4dDpjb250ZXh0IHZhbHVlOm5vZGVPYmplY3RdOworICAgIGlmICgh
ZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPigpOworCisg
ICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNoYWRvd0lkKEFkb3B0LCBKU1N0cmluZ0NyZWF0
ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpW2VsZW1lbnQgX3NoYWRvd1BzZXVkb0lkXSkpOwor
ICAgIHJldHVybiBzaGFkb3dJZDsKK30KKwogaW50IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdl
TnVtYmVyRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQsIGZsb2F0IHBhZ2VXaWR0aEluUGl4
ZWxzLCBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMpCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBpZENGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGlkKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuY3BwCmluZGV4IDcwN2IzYTMuLjljOWIzYmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC03OTksNiArNzk5
LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZVNoYWRvd1Jvb3QoY29uc3Qg
UVdlYkVsZW1lbnQmIGVsZW1lbnQpCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlbW92
ZVNoYWRvd1Jvb3QoZWxlbWVudCk7CiB9CiAKK1FTdHJpbmcgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNoYWRvd1BzZXVkb0lkKGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50KQoreworICAgIHJldHVy
biBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2hhZG93UHNldWRvSWQoZWxlbWVudCk7Cit9CisK
IGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdHMoKQogewogICAgIGludCBwZW5kaW5nUGVybWlzc2lvbkNvdW50ID0gMDsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApp
bmRleCBlNDQwNDhmLi5jNjY2NTBiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
TGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCkBAIC0yNTMsNiArMjUzLDcgQEAgcHVibGljIHNsb3Rz
OgogICAgIFFWYXJpYW50IHNoYWRvd1Jvb3QoY29uc3QgUVdlYkVsZW1lbnQmKTsKICAgICBRVmFy
aWFudCBlbnN1cmVTaGFkb3dSb290KGNvbnN0IFFXZWJFbGVtZW50Jik7CiAgICAgdm9pZCByZW1v
dmVTaGFkb3dSb290KGNvbnN0IFFXZWJFbGVtZW50Jik7CisgICAgUVN0cmluZyBzaGFkb3dQc2V1
ZG9JZChjb25zdCBRV2ViRWxlbWVudCYpOwogCiAgICAgdm9pZCBldmFsdWF0ZVNjcmlwdEluSXNv
bGF0ZWRXb3JsZChpbnQgd29ybGRJRCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KTsKICAgICBib29s
IGlzUGFnZUJveFZpc2libGUoaW50IHBhZ2VJbmRleCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRleCBhZTNjZDk3Li5l
MGRmMTIxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0
Q29udHJvbGxlcldpbi5jcHAKQEAgLTIyNyw2ICsyMjcsMzMgQEAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oSlNDb250
ZXh0UmUKICAgICByZXR1cm4gbWFya2VyVGV4dDsKIH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZChKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KSBjb25zdAoreworICAgIENPTVB0cjxJV2ViVmll
dz4gd2ViVmlldzsKKyAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0ZT4gd2ViVmlld1By
aXZhdGUoUXVlcnksIHdlYlZpZXcpOworICAgIGlmICghd2ViVmlld1ByaXZhdGUpCisgICAgICAg
IHJldHVybiAwOworCisgICAgQ09NUHRyPElET01FbGVtZW50PiBlbGVtZW50OworICAgIGlmIChG
QUlMRUQod2ViVmlld1ByaXZhdGUtPmVsZW1lbnRGcm9tSlMoY29udGV4dCwgbm9kZU9iamVjdCwg
JmVsZW1lbnQpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBDT01QdHI8SURPTUVsZW1lbnRQ
cml2YXRlPiBlbGVtZW50UHJpdmF0ZShRdWVyeSwgZWxlbWVudCk7CisgICAgaWYgKCFlbGVtZW50
UHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBCU1RSIGlkQlNUUiA9IDA7CisgICAg
aWYgKEZBSUxFRChlbGVtZW50UHJpdmF0ZS0+c2hhZG93UHNldWRvSWQoJmlkQlNUUikpKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBpZChBZG9wdCwg
SlNTdHJpbmdDcmVhdGVXaXRoQlNUUihpZEJTVFIpKTsKKyAgICBTeXNGcmVlU3RyaW5nKGlkQlNU
Uik7CisgICAgcmV0dXJuIGlkOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjp3YWl0
Rm9yUG9saWN5RGVsZWdhdGUoKQogewogICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3gu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAK
aW5kZXggMWFkMzU5ZS4uMThlZjE1MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKQEAgLTUwOCw2ICs1MDgsMTEgQEAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJUZXh0Rm9yTGlz
dEl0ZW0oSlNDb250ZXh0UmUKICAgICByZXR1cm4gMDsKIH0KIAorSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZChKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KSBjb25zdAoreworICAgIHJldHVybiAwOwor
fQorCiBKU1ZhbHVlUmVmIExheW91dFRlc3RDb250cm9sbGVyOjpjb21wdXRlZFN0eWxlSW5jbHVk
aW5nVmlzaXRlZEluZm8oSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKQogewogICAgIHJldHVybiAw
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbAppbmRleCBkNTkz
ZDNmLi5jYzRjNDRiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVy
LmlkbApAQCAtNjYsNiArNjYsNyBAQCBtb2R1bGUgV1RSIHsKICAgICAgICAgb2JqZWN0IHNoYWRv
d1Jvb3QoaW4gb2JqZWN0IGVsZW1lbnQpOwogICAgICAgICBvYmplY3QgZW5zdXJlU2hhZG93Um9v
dChpbiBvYmplY3QgZWxlbWVudCk7CiAgICAgICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdChpbiBv
YmplY3QgZWxlbWVudCk7CisgICAgICAgIERPTVN0cmluZyBzaGFkb3dQc2V1ZG9JZChpbiBvYmpl
Y3QgZWxlbWVudCk7CiAKICAgICAgICAgLy8gUmVwYWludCB0ZXN0aW5nLgogICAgICAgICB2b2lk
IHRlc3RSZXBhaW50KCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDhiOTc1NzIu
LjBiMWE2MDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC00MjMsNiArNDIzLDI0
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlbW92ZVNoYWRvd1Jvb3QoSlNWYWx1ZVJl
ZiBlbGVtZW50KQogICAgIFdLQnVuZGxlTm9kZUhhbmRsZVJlbW92ZVNoYWRvd1Jvb3QoZG9tRWxl
bWVudC5nZXQoKSk7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2hhZG93UHNldWRvSWQoSlNWYWx1ZVJlZiBlbGVtZW50KSBjb25zdAoreworICAg
IFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7CisgICAgSlNDb250ZXh0UmVm
IGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsK
KworICAgIGlmICghZWxlbWVudCB8fCAhSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIGVsZW1lbnQp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlTm9kZUhhbmRs
ZVJlZj4gZG9tRWxlbWVudCA9IGFkb3B0V0soV0tCdW5kbGVOb2RlSGFuZGxlQ3JlYXRlKGNvbnRl
eHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGVsZW1lbnQpKSk7CisgICAgaWYgKCFkb21FbGVt
ZW50KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBp
ZChBZG9wdFdLLCBXS0J1bmRsZU5vZGVIYW5kbGVTaGFkb3dQc2V1ZG9JZChkb21FbGVtZW50Lmdl
dCgpKSk7CisgICAgaWYgKFdLU3RyaW5nSXNFbXB0eShpZC5nZXQoKSkpCisgICAgICAgIHJldHVy
biAwOworICAgIHJldHVybiB0b0pTKGlkKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6Y2xlYXJCYWNrRm9yd2FyZExpc3QoKQogewogICAgIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0
Q2xlYXIoV0tCdW5kbGVQYWdlR2V0QmFja0ZvcndhcmRMaXN0KEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5wYWdlKCktPnBhZ2UoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDUzOTc2
MTcuLmJhOGEyNzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTk1LDYgKzk1LDcgQEAg
cHVibGljOgogICAgIEpTVmFsdWVSZWYgc2hhZG93Um9vdChKU1ZhbHVlUmVmIGVsZW1lbnQpOwog
ICAgIEpTVmFsdWVSZWYgZW5zdXJlU2hhZG93Um9vdChKU1ZhbHVlUmVmIGVsZW1lbnQpOwogICAg
IHZvaWQgcmVtb3ZlU2hhZG93Um9vdChKU1ZhbHVlUmVmIGVsZW1lbnQpOworICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBzaGFkb3dQc2V1ZG9JZChKU1ZhbHVlUmVmKSBjb25zdDsKIAogICAg
IC8vIFJlcGFpbnQgdGVzdGluZy4KICAgICB2b2lkIHRlc3RSZXBhaW50KCkgeyBtX3Rlc3RSZXBh
aW50ID0gdHJ1ZTsgfQotLSAKMS43LjQuNA==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92397</attachid>
            <date>2011-05-05 03:02:07 -0700</date>
            <delta_ts>2011-05-05 09:15:18 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>proposed-patch.patch</filename>
            <type>text/plain</type>
            <size>33980</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA1MmQ0NjZjM2RhMmNmM2RhMzkzNWRjOTU0ODJhNzlhMmYyMjIxYmJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDMgTWF5IDIwMTEgMjA6MDI6MzEgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
cm9wb3NlZCBwYXRjaAoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgMTAgKysrKysrCiBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250
cm9scy10cmFuc2Zvcm1lZC5odG1sICB8ICAgMTQgKysrKystLS0KIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgIHwgICAxMSArKysrKysKIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkVsZW1lbnQuaCAgICAgICAgIHwgICAgMSArCiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFbGVtZW50LmNwcCAgICAgICAgICB8ICAgIDUgKysr
CiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTEgKysrKysrCiAuLi4vV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNw
cCAgICB8ICAgMTAgKysrKysrCiAuLi4vZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0ay5oICB8ICAgIDEgKwogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDExICsrKysrKwogU291cmNlL1dlYktpdC9tYWMvRE9NL1dl
YkRPTU9wZXJhdGlvbnMubW0gICAgICAgICAgfCAgICA1ICsrKwogU291cmNlL1dlYktpdC9tYWMv
RE9NL1dlYkRPTU9wZXJhdGlvbnNQcml2YXRlLmggICAgfCAgICAxICsKIFNvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArKysrKysKIC4uLi9x
dC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAgIHwgICAgOSArKysr
KwogLi4uL3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmggICAgfCAg
ICAxICsKIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxMSArKysrKysKIFNvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcCAgICAg
ICAgICAgICAgIHwgICAxMiArKysrKysrCiBTb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nl
cy5oICAgICAgICAgICAgICAgICB8ICAgIDMgKysKIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFj
ZXMvRE9NUHJpdmF0ZS5pZGwgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRl
cmZhY2VzL1dlYktpdC5pZGwgICAgICAgICAgICB8ICAgIDEgKwogU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE1ICsrKysrKysrKwogLi4uL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAgICAgfCAgICA1ICsrKwog
Li4uL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZVByaXZhdGUuaCAgICAgICAgICAgICAgfCAgICAx
ICsKIC4uLi9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCAgICAgICAgICAgICAgIHwg
ICAgOCArKysrKwogLi4uL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGUuaCAgfCAgICAxICsKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAzNCArKysrKysrKysrKysrKysrKysrKwogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwICAgICAgfCAgIDExICsrKysrKwogVG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCAgICAgICAgfCAgICAxICsKIC4uLi9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgICAgICAgICAgICAgIHwgICAxMCArKysr
KysKIC4uLi9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIHwg
ICAgMSArCiAuLi4vRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cCB8ICAgMTAgKysrKysrCiAuLi4vRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9s
bGVyTWFjLm1tICB8ICAgMTAgKysrKysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0LmNwcCB8ICAgIDUgKysrCiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmggICB8ICAgIDEgKwogLi4uL0R1bXBSZW5kZXJUcmVlL3dp
bi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgfCAgIDI3ICsrKysrKysrKysrKysrKwogVG9v
bHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgfCAgICA1ICsr
KwogLi4uL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbCAgICAgICAgICAgICAgfCAg
ICAxICsKIC4uLi9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgICAgICAg
IHwgICAxOCArKysrKysrKysrCiAuLi4vSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaCAgICAgICAgICB8ICAgIDEgKwogMzggZmlsZXMgY2hhbmdlZCwgMjg5IGluc2VydGlvbnMo
KyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDczMjFiZWEuLjA5OGYwNjEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMS0wNS0wNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjpwc2V1ZG9TaGFkb3dJZCgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAzNAorCisgICAgICAg
ICogbWVkaWEvdmlkZW8tY29udHJvbHMtdHJhbnNmb3JtZWQuaHRtbDogUmVmYWN0b3JlZCB0byB1
c2UgdGhlCisgICAgICAgIHBzZXVkb1NoYWRvd0lkKCkgTGF5b3V0VGVzdENvbnRyb2xsZXIgbWV0
aG9kLgorCiAyMDExLTA1LTA1ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIG1hcmtpbmcgZmxha3kgdGVzdHMuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy10cmFuc2Zvcm1lZC5odG1sIGIvTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtdHJhbnNmb3JtZWQuaHRtbAppbmRleCAxNmVlZThh
Li4wMjBjZTBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy10
cmFuc2Zvcm1lZC5odG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLXRy
YW5zZm9ybWVkLmh0bWwKQEAgLTE5LDExICsxOSwxNSBAQAogICAgICAgICB3YWl0Rm9yRXZlbnQo
J2NhbnBsYXl0aHJvdWdoJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgewogICAgICAgICAgICAgICAgIC8vIEZpbmQgdGhlIHBsYXkgYnV0dG9uIGFu
ZCBjbGljayB0aGUgbWlkZGxlIG9mIGl0cyBib3VuZGluZyBib3guCi0gICAgICAgICAgICAgICAg
Ly8gVGhpcyBhcHByb2FjaCBoYXJkLWNvZGVzIHRoZSBjb25zdHJ1Y3Rpb24gb3JkZXIgb2YgdGhl
IG1lZGlhCi0gICAgICAgICAgICAgICAgLy8gY29udHJvbHMsIHdoaWNoIGlzIHVnbHksIGJ1dCBz
YWRseSBpcyBhbHNvIGN1cnJlbnRseSB0aGUgb25seQotICAgICAgICAgICAgICAgIC8vIHdheSB0
byBkbyBpdC4KLSAgICAgICAgICAgICAgICAvLyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01ODU4NCBpcyB0cmFja2luZyBmaXhpbmcgdGhhdC4KLSAgICAgICAgICAgICAg
ICB2YXIgcGxheUJ1dHRvbiA9IGxheW91dFRlc3RDb250cm9sbGVyLnNoYWRvd1Jvb3QodmlkZW8p
LmZpcnN0Q2hpbGQuZmlyc3RDaGlsZC5jaGlsZHJlblsxXTsKKyAgICAgICAgICAgICAgICB2YXIg
cGxheUJ1dHRvbjsKKyAgICAgICAgICAgICAgICB2YXIgY29udHJvbHNTaGFkb3cgPSBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zaGFkb3dSb290KHZpZGVvKS5maXJzdENoaWxkLmZpcnN0Q2hpbGQ7Cisg
ICAgICAgICAgICAgICAgZm9yIChjaGlsZCA9IGNvbnRyb2xzU2hhZG93LmZpcnN0Q2hpbGQ7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nKSB7CisgICAgICAgICAgICAgICAgICAgICBp
ZiAobGF5b3V0VGVzdENvbnRyb2xsZXIuc2hhZG93UHNldWRvSWQoY2hpbGQpID09ICItd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXBsYXktYnV0dG9uIikgeworICAgICAgICAgICAgICAgICAgICAgICAg
IHBsYXlCdXR0b24gPSBjaGlsZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAg
ICBpZiAoIXBsYXlCdXR0b24pIHsKICAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoIkZhaWxl
ZCB0byBmaW5kIHBsYXkvcGF1c2UgYnV0dG9uLiIpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggM2MxY2M1Mi4uMWIwMDY4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0wNS0wNCAgUGhpbGlwcGUgTm9ybWFu
ZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjpwc2V1ZG9T
aGFkb3dJZCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MDAzNAorCisgICAgICAgICogcHVibGljL1dlYkVsZW1lbnQuaDoKKyAgICAgICAgKiBzcmMv
V2ViRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVsZW1lbnQ6OnNoYWRvd1BzZXVk
b0lkKToKKwogMjAxMS0wNS0wMyAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEJsb2NrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRWxlbWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRWxlbWVudC5oCmluZGV4IDUzYjZhYTMuLjAyNGRiNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJFbGVtZW50LmgKQEAgLTYyLDYgKzYyLDcgQEAgY2xh
c3MgV2ViTmFtZWROb2RlTWFwOwogICAgICAgICBXRUJLSVRfQVBJIFdlYk5vZGUgc2hhZG93Um9v
dCgpOwogICAgICAgICBXRUJLSVRfQVBJIFdlYk5vZGUgZW5zdXJlU2hhZG93Um9vdCgpOwogICAg
ICAgICBXRUJLSVRfQVBJIHZvaWQgcmVtb3ZlU2hhZG93Um9vdCgpOworICAgICAgICBXRUJLSVRf
QVBJIFdlYlN0cmluZyBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogCiAgICAgICAgIC8vIFJldHVy
bnMgdGhlIGxhbmd1YWdlIGNvZGUgc3BlY2lmaWVkIGZvciB0aGlzIGVsZW1lbnQuICBUaGlzIGF0
dHJpYnV0ZQogICAgICAgICAvLyBpcyBpbmhlcml0ZWQsIHNvIHRoZSByZXR1cm5lZCB2YWx1ZSBp
cyBkcmF3biBmcm9tIHRoZSBjbG9zZXN0IHBhcmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJFbGVtZW50LmNwcAppbmRleCAzNjFiZmVlLi43ZTg1MWI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJFbGVtZW50LmNwcApAQCAtMTA2LDYgKzEwNiwxMSBAQCB2b2lkIFdl
YkVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QoKQogICAgIHVud3JhcDxFbGVtZW50PigpLT5yZW1v
dmVTaGFkb3dSb290KCk7CiB9CiAKK1dlYlN0cmluZyBXZWJFbGVtZW50OjpzaGFkb3dQc2V1ZG9J
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlN0cmluZyhjb25zdFVud3JhcDxFbGVtZW50Pigp
LT5zaGFkb3dQc2V1ZG9JZCgpLnN0cmluZygpKTsKK30KKwogV2ViU3RyaW5nIFdlYkVsZW1lbnQ6
OmNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdlYlN0cmlu
Zyhjb25zdFVud3JhcDxFbGVtZW50PigpLT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKaW5kZXggN2U1NGJlZS4uMWIxNTQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDExLTA1LTA0ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBzZXVkb1NoYWRvd0lkKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMDM0CisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAg
ICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmg6CisKIDIwMTEtMDUtMDQg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgR1RLIGJ1aWxkIGZp
eCBhdHRlbXB0IGFmdGVyIHI4NTgyMwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKaW5kZXggMjkw
M2NlZS4uNTMwZGY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCkBAIC00MTYsNiArNDE2
LDE2IEBAIENTdHJpbmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjptYXJrZXJUZXh0Rm9yTGlz
dEl0ZW0oV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBKCiAgICAgcmV0dXJuIFdlYkNvcmU6Om1hcmtl
clRleHRGb3JMaXN0SXRlbShlbGVtZW50KS51dGY4KCk7CiB9CiAKK0NTdHJpbmcgRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjpzaGFkb3dQc2V1ZG9JZChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNW
YWx1ZVJlZiBub2RlT2JqZWN0KQoreworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhj
b250ZXh0KTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KHRvSlMoZXhlYywgbm9k
ZU9iamVjdCkpOworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsK
KworICAgIHJldHVybiBlbGVtZW50LT5zaGFkb3dQc2V1ZG9JZCgpLnN0cmluZygpLnV0ZjgoKTsK
K30KKwogdW5zaWduZWQgaW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bnVtYmVyT2ZBY3Rp
dmVBbmltYXRpb25zKFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBGcmFtZSogY29yZUZy
YW1lID0gY29yZShmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCmluZGV4IGQ3ZDcxN2MuLjMz
OGJiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCkBAIC04MSw2ICs4MSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBwYXVzZVRyYW5zaXRpb24oV2ViS2l0V2ViRnJhbWUqLCBjb25zdCBj
aGFyKiBuYW1lLCBkb3VibGUgdGltZSwgY29uc3QgY2hhciogZWxlbWVudCk7CiAgICAgc3RhdGlj
IGJvb2wgcGF1c2VTVkdBbmltYXRpb24oV2ViS2l0V2ViRnJhbWUqLCBjb25zdCBjaGFyKiBhbmlt
YXRpb25JZCwgZG91YmxlIHRpbWUsIGNvbnN0IGNoYXIqIGVsZW1lbnRJZCk7CiAgICAgc3RhdGlj
IFdURjo6Q1N0cmluZyBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oV2ViS2l0V2ViRnJhbWUqLCBKU0Nv
bnRleHRSZWYsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCk7CisgICAgc3RhdGljIFdURjo6Q1N0cmlu
ZyBzaGFkb3dQc2V1ZG9JZChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCk7CiAg
ICAgc3RhdGljIHVuc2lnbmVkIGludCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoV2ViS2l0V2Vi
RnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhXZWJLaXRXZWJGcmFt
ZSopOwogICAgIHN0YXRpYyB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoV2ViS2l0V2ViRnJhbWUqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwppbmRleCBjYzA0MGEyLi5mOWUzM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTEtMDUtMDQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBp
Z2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cHNldWRvU2hhZG93SWQoKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAwMzQKKworICAg
ICAgICAqIERPTS9XZWJET01PcGVyYXRpb25zLm1tOgorICAgICAgICAoLVtET01FbGVtZW50IF9z
aGFkb3dQc2V1ZG9JZF0pOgorICAgICAgICAqIERPTS9XZWJET01PcGVyYXRpb25zUHJpdmF0ZS5o
OgorCiAyMDExLTA1LTA0ICBDcmlzIE5lY2thciAgPGNkbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0RPTS9XZWJET01PcGVyYXRpb25zLm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9w
ZXJhdGlvbnMubW0KaW5kZXggZjVkM2NhYi4uMmU4ZWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
RE9NL1dlYkRPTU9wZXJhdGlvbnMubW0KQEAgLTc1LDYgKzc1LDExIEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAgICAgcmV0dXJuIFdlYkNvcmU6Om1hcmtlclRleHRGb3JMaXN0SXRlbShjb3JlKHNl
bGYpKTsKIH0KIAorLSAoTlNTdHJpbmcgKilfc2hhZG93UHNldWRvSWQKK3sKKyAgICByZXR1cm4g
Y29yZShzZWxmKS0+c2hhZG93UHNldWRvSWQoKTsKK30KKwogLSAoSlNWYWx1ZVJlZilfc2hhZG93
Um9vdDooSlNDb250ZXh0UmVmKWNvbnRleHQKIHsKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL1dlYkRPTU9w
ZXJhdGlvbnNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9u
c1ByaXZhdGUuaAppbmRleCBiMzVhZjFkLi5mMDQxOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9ET00vV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaApAQCAtMzUsNiArMzUsNyBAQAogLSAo
SlNWYWx1ZVJlZilfc2hhZG93Um9vdDooSlNDb250ZXh0UmVmKWNvbnRleHQ7CiAtIChKU1ZhbHVl
UmVmKV9lbnN1cmVTaGFkb3dSb290OihKU0NvbnRleHRSZWYpY29udGV4dDsKIC0gKHZvaWQpX3Jl
bW92ZVNoYWRvd1Jvb3Q7CistIChOU1N0cmluZyAqKV9zaGFkb3dQc2V1ZG9JZDsKIEBlbmQKIAog
QGludGVyZmFjZSBET01Eb2N1bWVudCAoV2ViRE9NRG9jdW1lbnRPcGVyYXRpb25zUHJpdmF0ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggMTYwYTAyOS4uZmQ3MDVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMS0wNS0wNCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyOjpwc2V1ZG9TaGFkb3dJZCgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDAzNAorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAo
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCiAyMDExLTA1LTA0ICBDcmlz
IE5lY2thciAgPGNkbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBC
YXJ0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKaW5kZXggOWZhNDMyNC4uZTYwNjFiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5jcHAKQEAgLTExMDksNiArMTEwOSwxNSBAQCB2b2lkIER1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0OjpyZW1vdmVTaGFkb3dSb290KGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50
KQogICAgIHdlYkVsZW1lbnQtPnJlbW92ZVNoYWRvd1Jvb3QoKTsKIH0KIAorUVN0cmluZyBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6c2hhZG93UHNldWRvSWQoY29uc3QgUVdlYkVsZW1lbnQmIGVs
ZW1lbnQpCit7CisgICAgV2ViQ29yZTo6RWxlbWVudCogd2ViRWxlbWVudCA9IGVsZW1lbnQubV9l
bGVtZW50OworICAgIFFTdHJpbmcgcHNldWRvSWQ7CisgICAgaWYgKHdlYkVsZW1lbnQpCisgICAg
ICAgIHBzZXVkb0lkID0gd2ViRWxlbWVudC0+c2hhZG93UHNldWRvSWQoKS5zdHJpbmcoKTsKKyAg
ICByZXR1cm4gcHNldWRvSWQ7Cit9CisKIC8vIFByb3ZpZGUgYSBiYWNrd2FyZCBjb21wYXRpYmls
aXR5IHdpdGggcHJldmlvdXNseSBleHBvcnRlZCBwcml2YXRlIHN5bWJvbHMgYXMgb2YgUXRXZWJL
aXQgNC42IHJlbGVhc2UKIAogdm9pZCBRV0VCS0lUX0VYUE9SVCBxdF9yZXN1bWVBY3RpdmVET01P
YmplY3RzKFFXZWJGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKaW5kZXggZDQwZTA5Ni4u
YzAyN2QyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaApAQCAtMjA1LDYgKzIwNSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUVZhcmlhbnQgc2hhZG93Um9vdChjb25zdCBRV2ViRWxlbWVudCYpOwogICAg
IHN0YXRpYyBRVmFyaWFudCBlbnN1cmVTaGFkb3dSb290KGNvbnN0IFFXZWJFbGVtZW50Jik7CiAg
ICAgc3RhdGljIHZvaWQgcmVtb3ZlU2hhZG93Um9vdChjb25zdCBRV2ViRWxlbWVudCYpOworICAg
IHN0YXRpYyBRU3RyaW5nIHNoYWRvd1BzZXVkb0lkKGNvbnN0IFFXZWJFbGVtZW50Jik7CiB9Owog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBmNGUzNjk1Li5kYmJiYmEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDUtMDQgIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cHNldWRvU2hhZG93
SWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAw
MzQKKworICAgICAgICAqIERPTUNvcmVDbGFzc2VzLmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBET01Db3JlQ2xhc3Nlcy5oOgorCiAyMDExLTA1
LTA0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFdpbmRvd3Mg
YnVpbGQgZml4IGF0dGVtcHQgYWZ0ZXIgcjg1ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nl
cy5jcHAKaW5kZXggNzEzNzQ0OS4uYzc2NmMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFz
c2VzLmNwcApAQCAtMTE2MCw2ICsxMTYwLDE4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NRWxlbWVudDo6bWFya2VyVGV4dEZvckxpc3RJdGVtKAogICAgIHJldHVybiBTX09LOwogfQog
CitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKAor
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQoreworICAgIGlmICghcmVzdWx0
KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisgICAgQVNTRVJUKG1fZWxlbWVudCk7CisK
KyAgICAqcmVzdWx0ID0gQlN0cmluZyhtX2VsZW1lbnQtPnNoYWRvd1BzZXVkb0lkKCkuc3RyaW5n
KCkpLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKwogLy8gSURPTUVsZW1lbnRDU1NJ
bmxpbmVTdHlsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnN0eWxlKCAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmggYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5oCmluZGV4IGM1MmQ5MzMuLjVkY2I0NWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmgKKysrIGIvU291cmNlL1dlYktp
dC93aW4vRE9NQ29yZUNsYXNzZXMuaApAQCAtNzc5LDYgKzc3OSw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbWFya2VyVGV4dEZvckxpc3RJdGVtKAog
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIG1hcmtlclRleHQpOwogCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNoYWRvd1BzZXVkb0lkKAorICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCk7CisKICAgICAvLyBJRE9NRWxlbWVudENT
U0lubGluZVN0eWxlCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0eWxl
KAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01DU1NTdHlsZURlY2xhcmF0aW9uKiog
cmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvRE9NUHJp
dmF0ZS5pZGwgYi9Tb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0RPTVByaXZhdGUuaWRsCmlu
ZGV4IGMzYmI2MGUuLjI4OGY5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0ludGVy
ZmFjZXMvRE9NUHJpdmF0ZS5pZGwKKysrIGIvU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9E
T01Qcml2YXRlLmlkbApAQCAtNDgsNiArNDgsNyBAQCBpbnRlcmZhY2UgSURPTUVsZW1lbnRQcml2
YXRlIDogSVVua25vd24KICAgICBbbG9jYWxdIEhSRVNVTFQgZm9udChXZWJGb250RGVzY3JpcHRp
b24qIHdlYkZvbnREZXNjcmlwdGlvbik7CiAgICAgSFJFU1VMVCByZW5kZXJlZEltYWdlKFtvdXQs
IHJldHZhbF0gSEJJVE1BUCogaW1hZ2UpOwogICAgIFtsb2NhbF0gSFJFU1VMVCBtYXJrZXJUZXh0
Rm9yTGlzdEl0ZW0oW291dCwgcmV0dmFsXSBCU1RSKiBtYXJrZXJUZXh0KTsKKyAgICBbbG9jYWxd
IEhSRVNVTFQgc2hhZG93UHNldWRvSWQoW291dCwgcmV0dmFsXSBCU1RSKiByZXN1bHQpOwogfQog
CiAvKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRs
IGIvU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsCmluZGV4IDg4MTU4YTQu
LjNmNDAxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0
LmlkbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwKQEAgLTMw
MSwzICszMDEsNCBAQCBsaWJyYXJ5IFdlYktpdAogICAgICAgICBbZGVmYXVsdF0gaW50ZXJmYWNl
IElXZWJVc2VyQ29udGVudFVSTFBhdHRlcm47CiAgICAgfQogfQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWVl
MTgxMS4uYmFkYWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTA1LTA1ICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnBzZXVkb1NoYWRvd0lkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYwMDM0CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXS0J1bmRsZU5vZGVI
YW5kbGVTaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGVQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjplbGVtZW50UmVtb3ZlU2hhZG93
Um9vdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6ZWxlbWVu
dFNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaDoKKwogMjAxMS0wNS0wNSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4
IFdlYktpdDIgR1RLIGJ1aWxkIGFmdGVyIHI4NTgwOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVOb2RlSGFuZGxlLmNwcAppbmRleCA2MGY5NzBlLi5kMDBhOWQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhh
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC03OCw2ICs3OCwxMSBAQCB2b2lkIFdLQnVu
ZGxlTm9kZUhhbmRsZVJlbW92ZVNoYWRvd1Jvb3QoV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGVsZW1l
bnRIYW5kbGVSZWYpCiAgICAgdG9JbXBsKGVsZW1lbnRIYW5kbGVSZWYpLT5lbGVtZW50UmVtb3Zl
U2hhZG93Um9vdCgpOwogfQogCitXS1N0cmluZ1JlZiBXS0J1bmRsZU5vZGVIYW5kbGVTaGFkb3dQ
c2V1ZG9JZChXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxlbWVudEhhbmRsZVJlZikKK3sKKyAgICBy
ZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGVsZW1lbnRIYW5kbGVSZWYpLT5lbGVtZW50U2hhZG93
UHNldWRvSWQoKSk7Cit9CisKIHZvaWQgV0tCdW5kbGVOb2RlSGFuZGxlU2V0SFRNTElucHV0RWxl
bWVudFZhbHVlRm9yVXNlcihXS0J1bmRsZU5vZGVIYW5kbGVSZWYgaHRtbElucHV0RWxlbWVudEhh
bmRsZVJlZiwgV0tTdHJpbmdSZWYgdmFsdWVSZWYpCiB7CiAgICAgdG9JbXBsKGh0bWxJbnB1dEVs
ZW1lbnRIYW5kbGVSZWYpLT5zZXRIVE1MSW5wdXRFbGVtZW50VmFsdWVGb3JVc2VyKHRvV1RGU3Ry
aW5nKHZhbHVlUmVmKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZVByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxl
UHJpdmF0ZS5oCmluZGV4IDM5OWIwOTQuLmRiNmE4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVOb2RlSGFuZGxlUHJpdmF0ZS5oCkBAIC00OSw2ICs0OSw3IEBAIFdLX0VYUE9S
VCBXS1JlY3QgV0tCdW5kbGVOb2RlSGFuZGxlR2V0RWxlbWVudEJvdW5kcyhXS0J1bmRsZU5vZGVI
YW5kbGVSZWYgZWxlbWVuCiBXS19FWFBPUlQgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVuZGxl
Tm9kZUhhbmRsZUNvcHlFbGVtZW50U2hhZG93Um9vdChXS0J1bmRsZU5vZGVIYW5kbGVSZWYgZWxl
bWVudEhhbmRsZSk7CiBXS19FWFBPUlQgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVuZGxlTm9k
ZUhhbmRsZUNvcHlFbGVtZW50RW5zdXJlU2hhZG93Um9vdChXS0J1bmRsZU5vZGVIYW5kbGVSZWYg
ZWxlbWVudEhhbmRsZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZU5vZGVIYW5kbGVSZW1vdmVT
aGFkb3dSb290KFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBlbGVtZW50SGFuZGxlKTsKK1dLX0VYUE9S
VCBXS1N0cmluZ1JlZiBXS0J1bmRsZU5vZGVIYW5kbGVTaGFkb3dQc2V1ZG9JZChXS0J1bmRsZU5v
ZGVIYW5kbGVSZWYgZWxlbWVudEhhbmRsZSk7CiAKIC8qIEhUTUxJbnB1dEVsZW1lbnQgU3BlY2lm
aWMgT3BlcmF0aW9ucyAqLwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVOb2RlSGFuZGxlU2V0SFRN
TElucHV0RWxlbWVudFZhbHVlRm9yVXNlcihXS0J1bmRsZU5vZGVIYW5kbGVSZWYgaHRtbElucHV0
RWxlbWVudEhhbmRsZSwgV0tTdHJpbmdSZWYgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggOGY3M2RiZi4uZjdlNDIxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC0xOTAsNiAr
MTkwLDE0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjplbGVtZW50UmVtb3ZlU2hh
ZG93Um9vdCgpCiAgICAgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fbm9kZS5nZXQoKSktPnJlbW92
ZVNoYWRvd1Jvb3QoKTsKIH0KIAorU3RyaW5nIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6ZWxl
bWVudFNoYWRvd1BzZXVkb0lkKCkKK3sKKyAgICBpZiAoIW1fbm9kZS0+aXNFbGVtZW50Tm9kZSgp
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KG1fbm9kZS5nZXQoKSktPnNoYWRvd1BzZXVkb0lkKCk7Cit9CisKIFBhc3NSZWZQdHI8
V2ViRnJhbWU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6ZG9jdW1lbnRGcmFtZSgpCiB7CiAg
ICAgaWYgKCFtX25vZGUtPmlzRG9jdW1lbnROb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlTm9kZUhhbmRsZS5oCmluZGV4IGFmOGVlYjMuLmFlMTE2YWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oCkBAIC03MSw2ICs3MSw3IEBAIHB1
YmxpYzoKICAgICBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gZWxlbWVudFNo
YWRvd1Jvb3QoKTsKICAgICBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gZWxl
bWVudEVuc3VyZVNoYWRvd1Jvb3QoKTsKICAgICB2b2lkIGVsZW1lbnRSZW1vdmVTaGFkb3dSb290
KCk7CisgICAgU3RyaW5nIGVsZW1lbnRTaGFkb3dQc2V1ZG9JZCgpOwogCiAgICAgUGFzc1JlZlB0
cjxXZWJGcmFtZT4gZG9jdW1lbnRGcmFtZSgpOwogICAgIFBhc3NSZWZQdHI8V2ViRnJhbWU+IGh0
bWxGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMDMxZDMyLi5jYTIyMjUzIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIw
MTEtMDUtMDQgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6cHNldWRvU2hhZG93SWQoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAwMzQKKworICAgICAgICBzaGFkb3dQc2V1ZG9J
ZCBzdXBwb3J0IGluIHRoZSB2YXJpb3VzIExheW91dFRlc3RDb250cm9sbGVyCisgICAgICAgIGlt
cGxlbWVudGF0aW9ucy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKHNoYWRvd1BzZXVkb0lkQ2FsbGJhY2spOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNoYWRvd1BzZXVkb0lkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0
ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpz
aGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hhZG93UHNl
dWRvSWQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNoYWRvd1BzZXVkb0lkKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29u
dHJvbGxlci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9s
bGVyOjpzaGFkb3dQc2V1ZG9JZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorCiAyMDExLTA1LTA0ICBFcmljIFNlaWRl
bCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDRj
YTkwZDguLjY5YTRjODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAKQEAgLTIwODYsNiArMjA4NiwxNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRT
ZXJpYWxpemVIVFRQTG9hZHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZQogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGlj
IEpTVmFsdWVSZWYgc2hhZG93UHNldWRvSWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNPYmplY3RSZWYsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7
CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxl
ciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBj
b250cm9sbGVyLT5zaGFkb3dQc2V1ZG9JZChjb250ZXh0LCBhcmd1bWVudHNbMF0pLmdldCgpKTsK
K30KKwogLy8gU3RhdGljIFZhbHVlcwogCiBzdGF0aWMgSlNWYWx1ZVJlZiBnZXRHbG9iYWxGbGFn
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpT
U3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtMjMzMCw2
ICsyMzQwLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRp
Y0Z1bmN0aW9ucygpCiAgICAgICAgIHsgImRlbGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbiIsIGRl
bGV0ZUxvY2FsU3RvcmFnZUZvck9yaWdpbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm9y
aWdpbnNXaXRoTG9jYWxTdG9yYWdlIiwgb3JpZ2luc1dpdGhMb2NhbFN0b3JhZ2VDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJzZXRTaG91bGRQYWludEJyb2tlbkltYWdlIiwgc2V0U2hvdWxk
UGFpbnRCcm9rZW5JbWFnZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNoYWRvd1BzZXVk
b0lkIiwgc2hhZG93UHNldWRvSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7IDAsIDAsIDAg
fQogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CmluZGV4IGEzMWU5MDguLmE4MTc5ZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaApAQCAtNzUsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgaW50IHBhZ2VO
dW1iZXJGb3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCwgZmxvYXQgcGFnZVdpZHRoSW5QaXhl
bHMsIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscyk7CiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IHBhZ2VQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVy
KSBjb25zdDsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGFnZVNpemVBbmRNYXJnaW5z
SW5QaXhlbHMoaW50IHBhZ2VOdW1iZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IG1hcmdp
blRvcCwgaW50IG1hcmdpblJpZ2h0LCBpbnQgbWFyZ2luQm90dG9tLCBpbnQgbWFyZ2luTGVmdCkg
Y29uc3Q7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHNoYWRvd1BzZXVkb0lkKEpTQ29u
dGV4dFJlZiwgSlNWYWx1ZVJlZikgY29uc3Q7CiAgICAgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKGlu
dCBwYWdlTnVtYmVyKSBjb25zdDsKICAgICBKU1N0cmluZ1JlZiBwYXRoVG9Mb2NhbFJlc291cmNl
KEpTQ29udGV4dFJlZiwgSlNTdHJpbmdSZWYgdXJsKTsKICAgICB2b2lkIHF1ZXVlQmFja05hdmln
YXRpb24oaW50IGhvd0ZhckJhY2t3YXJkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBlZThkNWFjLi42NDUw
YWU3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xNzYsNiArMTc2LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhv
ZCgic2V0WFNTQXVkaXRvckVuYWJsZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFhTU0F1
ZGl0b3JFbmFibGVkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQpOwogICAgIGJpbmRNZXRob2QoInNoYWRvd1Jvb3QiLCAmTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNoYWRvd1Jvb3QpOworICAgIGJpbmRNZXRob2QoInNoYWRvd1BzZXVkb0lk
IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZCk7CiAgICAgYmluZE1ldGhv
ZCgic2hvd1dlYkluc3BlY3RvciIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hvd1dlYkluc3Bl
Y3Rvcik7CiAgICAgYmluZE1ldGhvZCgic2ltdWxhdGVEZXNrdG9wTm90aWZpY2F0aW9uQ2xpY2si
LCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNpbXVsYXRlRGVza3RvcE5vdGlmaWNhdGlvbkNsaWNr
KTsKICAgICBiaW5kTWV0aG9kKCJzdXNwZW5kQW5pbWF0aW9ucyIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c3VzcGVuZEFuaW1hdGlvbnMpOwpAQCAtNzEwLDYgKzcxMSwxNSBAQCB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpyZW1vdmVTaGFkb3dSb290KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLCBDcAogICAgIGVsZW1lbnQucmVtb3ZlU2hhZG93Um9vdCgpOwogfQogCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZChjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIFdlYkVsZW1lbnQgZWxl
bWVudDsKKyAgICBpZiAoIVdlYkJpbmRpbmdzOjpnZXRFbGVtZW50KGFyZ3VtZW50c1swXS52YWx1
ZS5vYmplY3RWYWx1ZSwgJmVsZW1lbnQpKQorICAgICAgICByZXN1bHQtPnNldE51bGwoKTsKKyAg
ICBlbHNlCisgICAgICAgIHJlc3VsdC0+c2V0KGVsZW1lbnQuc2hhZG93UHNldWRvSWQoKS51dGY4
KCkpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzaG93V2ViSW5zcGVjdG9yKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBtX3NoZWxs
LT5zaG93RGV2VG9vbHMoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDQ0YWMyY2QuLjMzY2ZhYWMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
aApAQCAtMjc0LDYgKzI3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNoYWRvd1Jvb3QoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgZW5zdXJlU2hhZG93Um9v
dChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCByZW1vdmVT
aGFkb3dSb290KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lk
IHNoYWRvd1BzZXVkb0lkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAog
ICAgIC8vIFRoZSBmYWxsYmFjayBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYSBub25leGlzdGVudCBt
ZXRob2QgaXMgY2FsbGVkIG9uCiAgICAgLy8gdGhlIGxheW91dCB0ZXN0IGNvbnRyb2xsZXIgb2Jq
ZWN0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250
cm9sbGVyR3RrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJv
bGxlckd0ay5jcHAKaW5kZXggNjE3YTA4Zi4uMmE0Mzk3ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC05MDUsNiAr
OTA1LDE2IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
bWFya2VyVGV4dEZvckxpc3RJdGVtKEpTQ29udGV4dFJlCiAgICAgcmV0dXJuIG1hcmtlclRleHQ7
CiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hh
ZG93UHNldWRvSWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCkg
Y29uc3QKK3sKKyAgICBDU3RyaW5nIGlkID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzaGFk
b3dQc2V1ZG9JZChjb250ZXh0LCBub2RlT2JqZWN0KTsKKyAgICBpZiAoaWQuaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHJlc3VsdChB
ZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoaWQuZGF0YSgpKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXV0aGVudGljYXRl
U2Vzc2lvbihKU1N0cmluZ1JlZiwgSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmKQogewogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFj
Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1t
CmluZGV4IGU4NWE3N2MuLmY0ZTk0ODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTI3OSw2ICsyNzksMTYgQEAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJUZXh0Rm9y
TGlzdEl0ZW0oSlNDb250ZXh0UmUKICAgICByZXR1cm4gbWFya2VyVGV4dDsKIH0KIAorSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZChK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KSBjb25zdAoreworICAg
IERPTUVsZW1lbnQgKmVsZW1lbnQgPSBbRE9NRWxlbWVudCBfRE9NRWxlbWVudEZyb21KU0NvbnRl
eHQ6Y29udGV4dCB2YWx1ZTpub2RlT2JqZWN0XTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAg
IHJldHVybiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4oKTsKKworICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBzaGFkb3dJZChBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENG
U3RyaW5nUmVmKVtlbGVtZW50IF9zaGFkb3dQc2V1ZG9JZF0pKTsKKyAgICByZXR1cm4gc2hhZG93
SWQ7Cit9CisKIGludCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZU51bWJlckZvckVsZW1lbnRC
eUlkKEpTU3RyaW5nUmVmIGlkLCBmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxvYXQgcGFnZUhl
aWdodEluUGl4ZWxzKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaWRDRihBZG9wdENG
LCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBpZCkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRl
eCA3MDdiM2EzLi45YzliM2JkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcApAQCAtNzk5LDYgKzc5OSwxMSBAQCB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpyZW1vdmVTaGFkb3dSb290KGNvbnN0IFFXZWJFbGVtZW50JiBlbGVt
ZW50KQogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZW1vdmVTaGFkb3dSb290KGVsZW1l
bnQpOwogfQogCitRU3RyaW5nIExheW91dFRlc3RDb250cm9sbGVyOjpzaGFkb3dQc2V1ZG9JZChj
b25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OnNoYWRvd1BzZXVkb0lkKGVsZW1lbnQpOworfQorCiBpbnQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKCkK
IHsKICAgICBpbnQgcGVuZGluZ1Blcm1pc3Npb25Db3VudCA9IDA7CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmggYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKaW5kZXggZTQ0MDQ4Zi4uYzY2
NjUwYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuaApAQCAtMjUzLDYgKzI1Myw3IEBAIHB1YmxpYyBzbG90czoKICAgICBRVmFyaWFudCBz
aGFkb3dSb290KGNvbnN0IFFXZWJFbGVtZW50Jik7CiAgICAgUVZhcmlhbnQgZW5zdXJlU2hhZG93
Um9vdChjb25zdCBRV2ViRWxlbWVudCYpOwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdChjb25z
dCBRV2ViRWxlbWVudCYpOworICAgIFFTdHJpbmcgc2hhZG93UHNldWRvSWQoY29uc3QgUVdlYkVs
ZW1lbnQmKTsKIAogICAgIHZvaWQgZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQoaW50IHdv
cmxkSUQsIGNvbnN0IFFTdHJpbmcmIHNjcmlwdCk7CiAgICAgYm9vbCBpc1BhZ2VCb3hWaXNpYmxl
KGludCBwYWdlSW5kZXgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xh
eW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlv
dXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggYWUzY2Q5Ny4uZTBkZjEyMSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
CkBAIC0yMjcsNiArMjI3LDMzIEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6bWFya2VyVGV4dEZvckxpc3RJdGVtKEpTQ29udGV4dFJlCiAgICAgcmV0dXJu
IG1hcmtlclRleHQ7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2hhZG93UHNldWRvSWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYg
bm9kZU9iamVjdCkgY29uc3QKK3sKKyAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CisgICAg
aWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+IHdlYlZpZXdQcml2YXRlKFF1ZXJ5LCB3ZWJW
aWV3KTsKKyAgICBpZiAoIXdlYlZpZXdQcml2YXRlKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IENPTVB0cjxJRE9NRWxlbWVudD4gZWxlbWVudDsKKyAgICBpZiAoRkFJTEVEKHdlYlZpZXdQcml2
YXRlLT5lbGVtZW50RnJvbUpTKGNvbnRleHQsIG5vZGVPYmplY3QsICZlbGVtZW50KSkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgQ09NUHRyPElET01FbGVtZW50UHJpdmF0ZT4gZWxlbWVudFBy
aXZhdGUoUXVlcnksIGVsZW1lbnQpOworICAgIGlmICghZWxlbWVudFByaXZhdGUpCisgICAgICAg
IHJldHVybiAwOworCisgICAgQlNUUiBpZEJTVFIgPSAwOworICAgIGlmIChGQUlMRUQoZWxlbWVu
dFByaXZhdGUtPnNoYWRvd1BzZXVkb0lkKCZpZEJTVFIpKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gaWQoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0
aEJTVFIoaWRCU1RSKSk7CisgICAgU3lzRnJlZVN0cmluZyhpZEJTVFIpOworICAgIHJldHVybiBp
ZDsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2FpdEZvclBvbGljeURlbGVnYXRl
KCkKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCmluZGV4IDFhZDM1OWUuLjE4
ZWYxNTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250
cm9sbGVyV3guY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250
cm9sbGVyV3guY3BwCkBAIC01MDgsNiArNTA4LDExIEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2VyVGV4dEZvckxpc3RJdGVtKEpTQ29udGV4dFJl
CiAgICAgcmV0dXJuIDA7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2hhZG93UHNldWRvSWQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgbm9kZU9iamVjdCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKwogSlNWYWx1ZVJlZiBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEpT
Q29udGV4dFJlZiwgSlNWYWx1ZVJlZikKIHsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwKaW5kZXggZDU5M2QzZi4uY2M0YzQ0YiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9M
YXlvdXRUZXN0Q29udHJvbGxlci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwKQEAgLTY2LDYgKzY2
LDcgQEAgbW9kdWxlIFdUUiB7CiAgICAgICAgIG9iamVjdCBzaGFkb3dSb290KGluIG9iamVjdCBl
bGVtZW50KTsKICAgICAgICAgb2JqZWN0IGVuc3VyZVNoYWRvd1Jvb3QoaW4gb2JqZWN0IGVsZW1l
bnQpOwogICAgICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoaW4gb2JqZWN0IGVsZW1lbnQpOwor
ICAgICAgICBET01TdHJpbmcgc2hhZG93UHNldWRvSWQoaW4gb2JqZWN0IGVsZW1lbnQpOwogCiAg
ICAgICAgIC8vIFJlcGFpbnQgdGVzdGluZy4KICAgICAgICAgdm9pZCB0ZXN0UmVwYWludCgpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCA4Yjk3NTcyLi4wYjFhNjA3IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNDIzLDYgKzQyMywyNCBAQCB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpyZW1vdmVTaGFkb3dSb290KEpTVmFsdWVSZWYgZWxlbWVudCkKICAgICBX
S0J1bmRsZU5vZGVIYW5kbGVSZW1vdmVTaGFkb3dSb290KGRvbUVsZW1lbnQuZ2V0KCkpOwogfQog
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNoYWRvd1Bz
ZXVkb0lkKEpTVmFsdWVSZWYgZWxlbWVudCkgY29uc3QKK3sKKyAgICBXS0J1bmRsZUZyYW1lUmVm
IG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5k
bGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CisKKyAgICBpZiAoIWVsZW1l
bnQgfHwgIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCBlbGVtZW50KSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBXS1JldGFpblB0cjxXS0J1bmRsZU5vZGVIYW5kbGVSZWY+IGRvbUVsZW1lbnQg
PSBhZG9wdFdLKFdLQnVuZGxlTm9kZUhhbmRsZUNyZWF0ZShjb250ZXh0LCBjb25zdF9jYXN0PEpT
T2JqZWN0UmVmPihlbGVtZW50KSkpOworICAgIGlmICghZG9tRWxlbWVudCkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaWQoQWRvcHRXSywgV0tCdW5k
bGVOb2RlSGFuZGxlU2hhZG93UHNldWRvSWQoZG9tRWxlbWVudC5nZXQoKSkpOworICAgIGlmIChX
S1N0cmluZ0lzRW1wdHkoaWQuZ2V0KCkpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
dG9KUyhpZCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNsZWFyQmFja0Zvcndh
cmRMaXN0KCkKIHsKICAgICBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdENsZWFyKFdLQnVuZGxlUGFn
ZUdldEJhY2tGb3J3YXJkTGlzdChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdl
KCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA1Mzk3NjE3Li5iYThhMjc1IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RD
b250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC05NSw2ICs5NSw3IEBAIHB1YmxpYzoKICAgICBKU1Zh
bHVlUmVmIHNoYWRvd1Jvb3QoSlNWYWx1ZVJlZiBlbGVtZW50KTsKICAgICBKU1ZhbHVlUmVmIGVu
c3VyZVNoYWRvd1Jvb3QoSlNWYWx1ZVJlZiBlbGVtZW50KTsKICAgICB2b2lkIHJlbW92ZVNoYWRv
d1Jvb3QoSlNWYWx1ZVJlZiBlbGVtZW50KTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
c2hhZG93UHNldWRvSWQoSlNWYWx1ZVJlZikgY29uc3Q7CiAKICAgICAvLyBSZXBhaW50IHRlc3Rp
bmcuCiAgICAgdm9pZCB0ZXN0UmVwYWludCgpIHsgbV90ZXN0UmVwYWludCA9IHRydWU7IH0KLS0g
CjEuNy40LjQ=
</data>
<flag name="review"
          id="85366"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>