<?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>81431</bug_id>
          
          <creation_ts>2012-03-16 17:06:31 -0700</creation_ts>
          <short_desc>[chromium] Allow us to disable overdraw metrics when tracing is off</short_desc>
          <delta_ts>2012-03-20 14:36:21 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>jbates</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>reveman</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>581112</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-16 17:06:31 -0700</bug_when>
    <thetext>[chromium] Throttle overdraw metrics</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581120</commentid>
    <comment_count>1</comment_count>
      <attachid>132421</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-16 17:16:19 -0700</bug_when>
    <thetext>Created attachment 132421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581128</commentid>
    <comment_count>2</comment_count>
      <attachid>132423</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-16 17:23:48 -0700</bug_when>
    <thetext>Created attachment 132423
Patch

- Need to override the overdraw metrics for the TiledLayerChromiumTest&apos;s TestCCOcclusionTracker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581141</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-16 17:33:58 -0700</bug_when>
    <thetext>What is the perf delta from this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581165</commentid>
    <comment_count>4</comment_count>
      <attachid>132423</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-16 17:57:44 -0700</bug_when>
    <thetext>Comment on attachment 132423
Patch

This seems like crazy overkill.  There are only two callers to overdrawMetrics - TiledLayerChromium and CCQuadCuller.  Just keep a counter in CCQuadCuller as a static local and for TiledLayerChromium stash a frame # somewhere and key off of that.  This should not be a 30kb+ patch that touches tons of files and has a whole pile of new tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581170</commentid>
    <comment_count>5</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-16 18:02:59 -0700</bug_when>
    <thetext>ok! (touching all the tests was avoiding holding pointers to things that were freed, there&apos;s just 1 new test)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581207</commentid>
    <comment_count>6</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-16 19:17:42 -0700</bug_when>
    <thetext>- Make the decision in CCLTH(Impl) to record the frame or not (since it also uses the metrics class).
- I can test that metrics do/don&apos;t record when you tell occlusion tracker what you like. But not sure how to test that the LTH is recording metrics at the desired rate in a sane way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581209</commentid>
    <comment_count>7</comment_count>
      <attachid>132436</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-16 19:18:02 -0700</bug_when>
    <thetext>Created attachment 132436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581221</commentid>
    <comment_count>8</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-16 19:36:06 -0700</bug_when>
    <thetext>Perf delta seems to be somewhere between 0.05ms and 0.1ms per frame out of a 16-30ms frame. So about 0.3% of a frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581527</commentid>
    <comment_count>9</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-18 17:08:09 -0700</bug_when>
    <thetext>Is 0.3% of the frame on each thread worth having this code? Or should we just record every frame?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582024</commentid>
    <comment_count>10</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-19 12:09:58 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Is 0.3% of the frame on each thread worth having this code? Or should we just record every frame?

What about recording every frame, but conditional to tracing being on? @jbates can help you make some code conditional on tracing being on.

The idea of having histograms on this is useful but thats only useful when someone posts a patch to src/tools/histograms/histograms.xml and pings jar@ to get them activated. We should decide if we want to get from-the-field data about overdraw --- if we do, we should turn on the histogram briefly for a canary or two, then turn it off again and revert to the &quot;only on when tracing is on.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583257</commentid>
    <comment_count>11</comment_count>
      <attachid>132859</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-20 11:16:30 -0700</bug_when>
    <thetext>Created attachment 132859
Patch

This stops throttling, and record every frame. But still puts code in place to easily disable overdraw metrics when about:tracing is off in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583280</commentid>
    <comment_count>12</comment_count>
      <attachid>132859</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-20 11:27:26 -0700</bug_when>
    <thetext>Comment on attachment 132859
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=132859&amp;action=review

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:279
&gt; +    bool recordMetricsForFrame = true; // FIXME: In the future, disable this when about:tracing is off.

Can the future be now? Is it hard to resolve this FIXME?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583300</commentid>
    <comment_count>13</comment_count>
      <attachid>132859</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-20 11:41:31 -0700</bug_when>
    <thetext>Comment on attachment 132859
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=132859&amp;action=review

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:279
&gt;&gt; +    bool recordMetricsForFrame = true; // FIXME: In the future, disable this when about:tracing is off.
&gt; 
&gt; Can the future be now? Is it hard to resolve this FIXME?

We don&apos;t want it now. I think we would like to collect some histograms in the wild for a while before we flip this off.

There is also no interface AIUI to check if tracing is on, but I think that won&apos;t be too bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583312</commentid>
    <comment_count>14</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-20 11:52:39 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 132859 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132859&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:279
&gt; &gt;&gt; +    bool recordMetricsForFrame = true; // FIXME: In the future, disable this when about:tracing is off.
&gt; &gt; 
&gt; &gt; Can the future be now? Is it hard to resolve this FIXME?
&gt; 
&gt; We don&apos;t want it now. I think we would like to collect some histograms in the wild for a while before we flip this off.
&gt; 
&gt; There is also no interface AIUI to check if tracing is on, but I think that won&apos;t be too bad.

Maybe I misunderstood.  It sounded like Nat was saying there was some work to get histograms enabled, so I was thinking you would only turn on overdraw metrics when tracing was on for now and would force the flag to always on once the histograms were enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583319</commentid>
    <comment_count>15</comment_count>
      <attachid>132859</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-20 11:58:21 -0700</bug_when>
    <thetext>Comment on attachment 132859
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=132859&amp;action=review

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:279
&gt;&gt;&gt;&gt; +    bool recordMetricsForFrame = true; // FIXME: In the future, disable this when about:tracing is off.
&gt;&gt;&gt; 
&gt;&gt;&gt; Can the future be now? Is it hard to resolve this FIXME?
&gt;&gt; 
&gt;&gt; We don&apos;t want it now. I think we would like to collect some histograms in the wild for a while before we flip this off.
&gt;&gt; 
&gt;&gt; There is also no interface AIUI to check if tracing is on, but I think that won&apos;t be too bad.
&gt; 
&gt; Maybe I misunderstood.  It sounded like Nat was saying there was some work to get histograms enabled, so I was thinking you would only turn on overdraw metrics when tracing was on for now and would force the flag to always on once the histograms were enabled.

There is some work to do server side to store the histograms that we can do at any point, and a flag to flip in chromium. But otherwise, they are good to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583359</commentid>
    <comment_count>16</comment_count>
      <attachid>132859</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-20 12:40:31 -0700</bug_when>
    <thetext>Comment on attachment 132859
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=132859&amp;action=review

Ok, thanks for the explanation.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCOverdrawMetrics.h:53
&gt; +    CCOverdrawMetrics(bool recordMetricsForFrame);

nit: explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583369</commentid>
    <comment_count>17</comment_count>
      <attachid>132859</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 12:53:31 -0700</bug_when>
    <thetext>Comment on attachment 132859
Patch

Attachment 132859 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12002434</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583384</commentid>
    <comment_count>18</comment_count>
      <attachid>132882</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-20 13:02:18 -0700</bug_when>
    <thetext>Created attachment 132882
Patch

Woops, thanks. Also, rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583466</commentid>
    <comment_count>19</comment_count>
      <attachid>132882</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 14:36:15 -0700</bug_when>
    <thetext>Comment on attachment 132882
Patch

Clearing flags on attachment: 132882

Committed r111441: &lt;http://trac.webkit.org/changeset/111441&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583467</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 14:36:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132421</attachid>
            <date>2012-03-16 17:16:19 -0700</date>
            <delta_ts>2012-03-16 17:23:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81431-20120316201618.patch</filename>
            <type>text/plain</type>
            <size>30085</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRlZGNkMzc3OTAwNjc0
YmNkNzEyNzAxNTA4MmFlMjNkMDc1OTk1MC4uOWMxODM0Y2MzNjdkMTkzNmE2NDU4OWY1ZjRlY2Mw
NTY5YjgwOGU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTAzLTE2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVGhy
b3R0bGUgb3ZlcmRyYXcgbWV0cmljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODE0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIGFsbG93cyB0aGUgY3JlYXRvciBvZiBhIENDT3ZlcmRyYXdNZXRy
aWNzIG9iamVjdCB0byBzZXQKKyAgICAgICAgYSByYXRlIGF0IHdoaWNoIHRoZSBtZXRyaWNzIHdp
bGwgYmUgcmVjb3JkZWQuIEl0IGlzIGFzc3VtZWQKKyAgICAgICAgdGhhdCBhIG5ldyBDQ092ZXJk
cmF3TWV0cmljcyBpcyBjcmVhdGVkIGZvciBlYWNoIGZyYW1lLiBTbworICAgICAgICBldmVyeSAx
L24tdGggY3JlYXRpb24gb2YgdGhlIENDT3ZlcmRyYXdNZXRyaWNzLCB3ZSBhbGxvdyBpdAorICAg
ICAgICB0byByZWNvcmQuCisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgdGhhdCB3ZSByZWNvcmQg
dHdpY2UgZm9yIGVhY2ggZnJhbWUgLSBvbmNlIGZvcgorICAgICAgICB1cGxvYWQgYW5kIG9uY2Ug
Zm9yIGRyYXcuIEFuZCB3ZSB3YW50IHRoZSBzYW1wbGluZyByYXRlcyB0byBiZQorICAgICAgICBp
bmRlcGVuZGVudCBmcm9tIGVhY2ggb3RoZXIuIFdlIHNvbHZlIHRoaXMgYnkgaW50cm9kdWNpbmcg
YQorICAgICAgICBDQ092ZXJkcmF3TWV0cmljczo6RnJhbWVDb3VudGVyIG9iamVjdCwgYSBjb3B5
IG9mIHdoaWNoIGNhbgorICAgICAgICBiZSBoZWxkIGZvciBlYWNoIGNvbnRleHQgaW4gd2hpY2gg
eW91IGFyZSByZWNvcmRpbmcuIFRoaXMKKyAgICAgICAgb2JqZWN0IGRlY2lkZXMgaWYgdGhlIGN1
cnJlbnQgbWV0cmljcyBvYmplY3Qgc2hvdWxkIHJlY29yZAorICAgICAgICBvciBub3QuCisKKyAg
ICAgICAgVW5pdCB0ZXN0OiBDQ1F1YWRDdWxsZXJUZXN0LnZlcmlmeU92ZXJkcmF3TWV0cmljc1Ro
cm90dGxpbmcKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2Nj
bHVzaW9uVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN1cmZhY2VDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6OjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaDoK
KyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlckJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDT3ZlcmRyYXdNZXRyaWNzOjpDQ092ZXJkcmF3TWV0cmljcyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ092ZXJkcmF3TWV0cmljczo6ZGlkQ3VsbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ092
ZXJkcmF3TWV0cmljczo6ZGlkRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ092ZXJkcmF3TWV0
cmljczo6cmVjb3JkTWV0cmljcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
RnJhbWVDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT3ZlcmRyYXdNZXRyaWNzOjpGcmFt
ZUNvdW50ZXI6OkZyYW1lQ291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ092ZXJkcmF3TWV0
cmljczo6RnJhbWVDb3VudGVyOjpjdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NP
dmVyZHJhd01ldHJpY3M6OkZyYW1lQ291bnRlcjo6c2hvdWxkQ291bnROZXdGcmFtZSk6CisgICAg
ICAgIChDQ092ZXJkcmF3TWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ092ZXJkcmF3TWV0
cmljczo6Y3JlYXRlKToKKwogMjAxMi0wMy0xNiAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgRml4IHJvdW5kaW5nIGFuZCB1c2FnZSBvZiBMYXlvdXRVbml0cyBp
biBSZW5kZXJCb3hNb2RlbE9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1NjA2
ZmIwOWE5ZjQ5OTY4NzdjNWFmZTZlMWUxZGNjNjU5Y2YzZDc3Li41YTI2MTM4ZWFmYWEyZDdlNDEx
MWJiNmEyNWVhMjc1NzJiNzFmNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE5IEBACisyMDEyLTAzLTE2ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gVGhyb3R0bGUgb3ZlcmRyYXcgbWV0cmljcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0MzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDUXVhZEN1
bGxlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlcklt
cGw6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsKToKKyAgICAgICAgKFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJJbXBsKToKKyAgICAgICAgKFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsV2l0aE1l
dHJpY3MpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGxXaXRo
TWV0cmljczo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGxXaXRoTWV0cmljcyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlRFU1QpOgorCiAyMDEyLTAzLTE1ICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVmYWN0b3IgQ2xpcGJvYXJkQ2hyb21pdW0g
YW5kIERhdGFUcmFuc2Zlckl0ZW1MaXN0L0RhdGFUcmFuc2Zlckl0ZW0gdG8gc3VwcG9ydCBIVE1M
IHNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCmluZGV4IGM2OWE0ZDlj
ODFkMjE0OGFlMGFjN2Q3ODk5MDYxMmE4ZmViZjk1YjIuLmM4NWI3ZTYyZWU1MzZkMWM5MDVlMDg0
YmYwMzUyN2VkOTU0YWUzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNw
cApAQCAtMzgsMTAgKzM4LDI1IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorLy8gS2VlcCBhIHNlcGFyYXRlIGZyYW1lIGNvdW50ZXIgZm9yIGVhY2ggdGhy
ZWFkLiBUaGVzZSBtZXRob2QgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIHN0YXRpYywgc28gYXJlIG5h
bWVkIHZlcmJvc2VseS4KK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVu
ZGVyU3VyZmFjZVR5cGU+IENDT3ZlcmRyYXdNZXRyaWNzOjpGcmFtZUNvdW50ZXImIG92ZXJkcmF3
TWV0cmljc0ZyYW1lQ291bnRlckZvck9jY2x1c2lvblRyYWNrZXIoKTsKKwordGVtcGxhdGU8PiBD
Q092ZXJkcmF3TWV0cmljczo6RnJhbWVDb3VudGVyJiBvdmVyZHJhd01ldHJpY3NGcmFtZUNvdW50
ZXJGb3JPY2NsdXNpb25UcmFja2VyPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1
bT4oKQoreworICAgIHN0YXRpYyBDQ092ZXJkcmF3TWV0cmljczo6RnJhbWVDb3VudGVyIG1haW5U
aHJlYWRDb3VudGVyKDAuMSk7CisgICAgcmV0dXJuIG1haW5UaHJlYWRDb3VudGVyOworfQorCit0
ZW1wbGF0ZTw+IENDT3ZlcmRyYXdNZXRyaWNzOjpGcmFtZUNvdW50ZXImIG92ZXJkcmF3TWV0cmlj
c0ZyYW1lQ291bnRlckZvck9jY2x1c2lvblRyYWNrZXI8Q0NMYXllckltcGwsIENDUmVuZGVyU3Vy
ZmFjZT4oKQoreworICAgIHN0YXRpYyBDQ092ZXJkcmF3TWV0cmljczo6RnJhbWVDb3VudGVyIGlt
cGxUaHJlYWRDb3VudGVyKDAuMSk7CisgICAgcmV0dXJuIGltcGxUaHJlYWRDb3VudGVyOworfQor
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBl
PgogQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6
Q0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSkK
LSAgICA6IG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlKHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFj
ZSkKLSAgICAsIG1fb3ZlcmRyYXdNZXRyaWNzKENDT3ZlcmRyYXdNZXRyaWNzOjpjcmVhdGUoKSkK
KyAgICA6IG1fb3ZlcmRyYXdNZXRyaWNzKENDT3ZlcmRyYXdNZXRyaWNzOjpjcmVhdGUob3ZlcmRy
YXdNZXRyaWNzRnJhbWVDb3VudGVyRm9yT2NjbHVzaW9uVHJhY2tlcjxMYXllclR5cGUsIFJlbmRl
clN1cmZhY2VUeXBlPigpKSkKKyAgICAsIG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlKHNjaXNz
b3JSZWN0SW5TY3JlZW5TcGFjZSkKICAgICAsIG1fdXNlUGFpbnRUcmFja2luZyh0cnVlKSAvLyBG
SVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBwYWludCB0cmFja2luZyBpcyBvbiBmb3IgcGFpbnQgY3Vs
bGluZy4KIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgKaW5kZXggMjgyZGVm
ZmRmMjU2NGJlM2Y5MDEzZDJlOTIwMjZlOWI4ZDZlMmFmZC4uOGViZDY0NzBiNzQwNmY0MDk0NGUw
YzJlNTlhNTYxYTU4M2Q1MjA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgK
QEAgLTk1LDEyICs5NSwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gV2UgbWVyZ2UgdGhlIG9jY2x1
c2lvbiBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjayB3aXRoIHRoZSBuZXcgY3VycmVudCBzdWJ0cmVl
LiBUaGlzIG5ldyB0YXJnZXQgaXMgcHVzaGVkIG9udG8gdGhlIHN0YWNrIGlmIG5vdCBhbHJlYWR5
IHRoZXJlLgogICAgIFZlY3RvcjxTdGFja09iamVjdCwgMT4gbV9zdGFjazsKIAorICAgIE93blB0
cjxDQ092ZXJkcmF3TWV0cmljcz4gbV9vdmVyZHJhd01ldHJpY3M7CisKICAgICAvLyBBbGxvdyB0
ZXN0cyB0byBvdmVycmlkZSB0aGlzLgogICAgIHZpcnR1YWwgSW50UmVjdCBsYXllclNjaXNzb3JS
ZWN0SW5UYXJnZXRTdXJmYWNlKGNvbnN0IExheWVyVHlwZSopIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIEludFJlY3QgbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2U7Ci0gICAgT3duUHRyPENDT3Zl
cmRyYXdNZXRyaWNzPiBtX292ZXJkcmF3TWV0cmljczsKICAgICBib29sIG1fdXNlUGFpbnRUcmFj
a2luZzsgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gcGFpbnQgdHJhY2tpbmcgaXMgb24gZm9y
IHBhaW50IGN1bGxpbmcuCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5jcHAK
aW5kZXggYTc3ZGM2OWYwNjFiNTA4M2I4OGM4YjU4ZjI5MDhjM2M0OTUwNjRjNC4uYjlmNzExNTNm
OGFkYjM2OWRlNTYzMDZjZmU2YTc1ZGJiMmZjMzc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRy
YXdNZXRyaWNzLmNwcApAQCAtMzcsOCArMzcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUNDT3ZlcmRyYXdNZXRyaWNzOjpDQ092ZXJkcmF3TWV0cmljcygpCi0gICAgOiBtX3BpeGVsc0Ry
YXduT3BhcXVlKDApCitDQ092ZXJkcmF3TWV0cmljczo6Q0NPdmVyZHJhd01ldHJpY3MoRnJhbWVD
b3VudGVyJiBjb3VudGVyKQorICAgIDogbV9jb3VudFRoaXNGcmFtZShjb3VudGVyLnNob3VsZENv
dW50TmV3RnJhbWUoKSkKKyAgICAsIG1fcGl4ZWxzRHJhd25PcGFxdWUoMCkKICAgICAsIG1fcGl4
ZWxzRHJhd25UcmFuc2x1Y2VudCgwKQogICAgICwgbV9waXhlbHNDdWxsZWQoMCkKIHsKQEAgLTYw
LDYgKzYxLDkgQEAgc3RhdGljIGlubGluZSBmbG9hdCBxdWFkQXJlYShjb25zdCBGbG9hdFF1YWQm
IHF1YWQpCiAKIHZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OmRpZEN1bGwoY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZ2V0LCBjb25zdCBJbnRSZWN0JiBiZWZvcmVDdWxs
UmVjdCwgY29uc3QgSW50UmVjdCYgYWZ0ZXJDdWxsUmVjdCkKIHsKKyAgICBpZiAoIW1fY291bnRU
aGlzRnJhbWUpCisgICAgICAgIHJldHVybjsKKwogICAgIGZsb2F0IGJlZm9yZUN1bGxBcmVhID0g
cXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1YWQoYmVmb3JlQ3VsbFJl
Y3QpKSk7CiAgICAgZmxvYXQgYWZ0ZXJDdWxsQXJlYSA9IHF1YWRBcmVhKHRyYW5zZm9ybVRvVGFy
Z2V0Lm1hcFF1YWQoRmxvYXRRdWFkKGFmdGVyQ3VsbFJlY3QpKSk7CiAKQEAgLTY4LDYgKzcyLDkg
QEAgdm9pZCBDQ092ZXJkcmF3TWV0cmljczo6ZGlkQ3VsbChjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQsIGMKIAogdm9pZCBDQ092ZXJkcmF3TWV0cmljczo6ZGlk
RHJhdyhjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQsIGNvbnN0
IEludFJlY3QmIGFmdGVyQ3VsbFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpCiB7Cisg
ICAgaWYgKCFtX2NvdW50VGhpc0ZyYW1lKQorICAgICAgICByZXR1cm47CisKICAgICBmbG9hdCBh
ZnRlckN1bGxBcmVhID0gcXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1
YWQoYWZ0ZXJDdWxsUmVjdCkpKTsKICAgICBmbG9hdCBhZnRlckN1bGxPcGFxdWVBcmVhID0gcXVh
ZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1YWQoaW50ZXJzZWN0aW9uKG9w
YXF1ZVJlY3QsIGFmdGVyQ3VsbFJlY3QpKSkpOwogCkBAIC03NywxMiArODQsMTQgQEAgdm9pZCBD
Q092ZXJkcmF3TWV0cmljczo6ZGlkRHJhdyhjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtVG9UYXJnZXQsIGMKIAogdm9pZCBDQ092ZXJkcmF3TWV0cmljczo6cmVjb3JkTWV0cmlj
cyhjb25zdCBDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpIGNvbnN0CiB7Ci0gICAgcmVj
b3JkTWV0cmljc0ludGVybmFsPENDTGF5ZXJUcmVlSG9zdD4oVVBMT0FESU5HLCBsYXllclRyZWVI
b3N0KTsKKyAgICBpZiAobV9jb3VudFRoaXNGcmFtZSkKKyAgICAgICAgcmVjb3JkTWV0cmljc0lu
dGVybmFsPENDTGF5ZXJUcmVlSG9zdD4oVVBMT0FESU5HLCBsYXllclRyZWVIb3N0KTsKIH0KIAog
dm9pZCBDQ092ZXJkcmF3TWV0cmljczo6cmVjb3JkTWV0cmljcyhjb25zdCBDQ0xheWVyVHJlZUhv
c3RJbXBsKiBsYXllclRyZWVIb3N0KSBjb25zdAogewotICAgIHJlY29yZE1ldHJpY3NJbnRlcm5h
bDxDQ0xheWVyVHJlZUhvc3RJbXBsPihEUkFXSU5HLCBsYXllclRyZWVIb3N0KTsKKyAgICBpZiAo
bV9jb3VudFRoaXNGcmFtZSkKKyAgICAgICAgcmVjb3JkTWV0cmljc0ludGVybmFsPENDTGF5ZXJU
cmVlSG9zdEltcGw+KERSQVdJTkcsIGxheWVyVHJlZUhvc3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBMYXllclRyZWVIb3N0VHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5oCmlu
ZGV4IDQ4OWNhNTY5YzUyNTUzODljY2YzMDJhNGMzOGNkODdmNjIwY2MxZjQuLjE0MTFjM2ExM2U1
MWZlMmFiNzA4OGI4Mzk2MjkxM2YzOTk0MzQ3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01l
dHJpY3MuaApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBDQ092ZXJkcmF3TWV0cmljc19oCiAj
ZGVmaW5lIENDT3ZlcmRyYXdNZXRyaWNzX2gKIAorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzMsMTAgKzM0LDIyIEBAIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogY2xhc3MgQ0NMYXll
clRyZWVIb3N0OwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIAotLy8gRklYTUU6IGNvbXB1
dGUgb3ZlcmRyYXcgbWV0cmljcyBvbmx5IG9jY2FzaW9uYWxseSwgbm90IGV2ZXJ5IGZyYW1lLgog
Y2xhc3MgQ0NPdmVyZHJhd01ldHJpY3MgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PENDT3ZlcmRyYXdNZXRyaWNzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NPdmVy
ZHJhd01ldHJpY3MoKSk7IH0KKyAgICBjbGFzcyBGcmFtZUNvdW50ZXIgeworICAgIHB1YmxpYzoK
KyAgICAgICAgRnJhbWVDb3VudGVyKGRvdWJsZSBwZXJjZW50YWdlT2ZGcmFtZXMpIDogbV9mcmFt
ZSgwKSwgbV9jb3VudE9uZUZyYW1lSW5FYWNoKHJvdW5kKDEgLyBwZXJjZW50YWdlT2ZGcmFtZXMp
KSB7IH0KKyAgICAgICAgaW50IGN1cnJlbnRGcmFtZSgpIHsgcmV0dXJuIG1fZnJhbWU7IH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgc2hvdWxkQ291bnROZXdGcmFtZSgpIHsgcmV0dXJu
ICEobV9mcmFtZSsrICUgbV9jb3VudE9uZUZyYW1lSW5FYWNoKTsgfQorCisgICAgICAgIGludCBt
X2ZyYW1lOworICAgICAgICBpbnQgbV9jb3VudE9uZUZyYW1lSW5FYWNoOworICAgICAgICBmcmll
bmQgY2xhc3MgQ0NPdmVyZHJhd01ldHJpY3M7CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzT3du
UHRyPENDT3ZlcmRyYXdNZXRyaWNzPiBjcmVhdGUoRnJhbWVDb3VudGVyJiBjb3VudGVyKSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgQ0NPdmVyZHJhd01ldHJpY3MoY291bnRlcikpOyB9CiAKICAgICB2
b2lkIGRpZEN1bGwoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZ2V0
LCBjb25zdCBJbnRSZWN0JiBiZWZvcmVDdWxsUmVjdCwgY29uc3QgSW50UmVjdCYgYWZ0ZXJDdWxs
UmVjdCk7CiAgICAgdm9pZCBkaWREcmF3KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm1Ub1RhcmdldCwgY29uc3QgSW50UmVjdCYgYWZ0ZXJDdWxsUmVjdCwgY29uc3QgSW50UmVj
dCYgb3BhcXVlUmVjdCk7CkBAIC01MCw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBwaXhl
bHNDdWxsZWQoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsc0N1bGxlZDsgfQogCiBwcml2YXRlOgot
ICAgIENDT3ZlcmRyYXdNZXRyaWNzKCk7CisgICAgQ0NPdmVyZHJhd01ldHJpY3MoRnJhbWVDb3Vu
dGVyJik7CiAKICAgICBlbnVtIE1ldHJpY3NUeXBlIHsKICAgICAgICAgRFJBV0lORywKQEAgLTYw
LDYgKzczLDggQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclRyZWVIb3N0
VHlwZT4KICAgICB2b2lkIHJlY29yZE1ldHJpY3NJbnRlcm5hbChNZXRyaWNzVHlwZSwgY29uc3Qg
TGF5ZXJUcmVlSG9zdFR5cGUqKSBjb25zdDsKIAorICAgIC8vIFdoZW4gZmFsc2UsIHRoaXMgY2xh
c3MgaXMgYSBnaWFudCBuby1vcC4KKyAgICBib29sIG1fY291bnRUaGlzRnJhbWU7CiAgICAgLy8g
Q291bnQgb2YgcGl4ZWxzIHRoYXQgYXJlIG9wYXF1ZSAoYW5kIHRodXMgb2NjbHVkZSkuIElkZWFs
bHkgdGhpcyBpcyBubyBtb3JlCiAgICAgLy8gdGhhbiB3aWV3cG9ydCB3aWR0aCB4IGhlaWdodC4K
ICAgICBmbG9hdCBtX3BpeGVsc0RyYXduT3BhcXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggMTU4YjBjMDhiNzBmMWMxZjg2
OTdkNzEyOTBiYjljZTZlNmQzYjdhNC4uZmM4NGFmZGFmMmQ4YmRjYjkwZmY1ZWQ3OThhNDViMWJh
M2M0NjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRD
dWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1
bGxlclRlc3QuY3BwCkBAIC00Miw4ICs0MiwxMiBAQCBjbGFzcyBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VySW1wbCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJJbXBsIHsKIHB1YmxpYzoKICAgICBU
ZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbChjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdEluU2Ny
ZWVuKQogICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlckltcGwoc2Npc3NvclJlY3RJblNjcmVl
bikKKyAgICAgICAgLCBtX2ZyYW1lQ291bnRlcigxLjApCiAgICAgICAgICwgbV9zY2lzc29yUmVj
dEluU2NyZWVuKHNjaXNzb3JSZWN0SW5TY3JlZW4pCiAgICAgeworICAgICAgICAvLyBSZXBsYWNl
IHRoZSBDQ092ZXJkcmF3TWV0cmljcyB3aXRoIG9uZSB0aGF0IHdpbGwgY291bnQgZXZlcnkgZnJh
bWUgKGFuZCBldmVyeSB0ZXN0KQorICAgICAgICBtX292ZXJkcmF3TWV0cmljcyA9IENDT3ZlcmRy
YXdNZXRyaWNzOjpjcmVhdGUobV9mcmFtZUNvdW50ZXIpOworCiAgICAgICAgIC8vIFByZXRlbmQg
d2UgaGF2ZSB2aXNpdGVkIGEgcmVuZGVyIHN1cmZhY2UuCiAgICAgICAgIG1fc3RhY2suYXBwZW5k
KFN0YWNrT2JqZWN0KCkpOwogICAgIH0KQEAgLTUyLDkgKzU2LDIwIEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIEludFJlY3QgbGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShjb25zdCBD
Q0xheWVySW1wbCogbGF5ZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2Npc3NvclJlY3RJblNjcmVlbjsg
fQogCiBwcml2YXRlOgorICAgIENDT3ZlcmRyYXdNZXRyaWNzOjpGcmFtZUNvdW50ZXIgbV9mcmFt
ZUNvdW50ZXI7CiAgICAgSW50UmVjdCBtX3NjaXNzb3JSZWN0SW5TY3JlZW47CiB9OwogCitjbGFz
cyBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbFdpdGhNZXRyaWNzIDogcHVibGljIFRlc3RDQ09j
Y2x1c2lvblRyYWNrZXJJbXBsIHsKK3B1YmxpYzoKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
SW1wbFdpdGhNZXRyaWNzKGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0SW5TY3JlZW4sIENDT3Zl
cmRyYXdNZXRyaWNzOjpGcmFtZUNvdW50ZXImIGNvdW50ZXIpCisgICAgICAgIDogVGVzdENDT2Nj
bHVzaW9uVHJhY2tlckltcGwoc2Npc3NvclJlY3RJblNjcmVlbikKKyAgICB7CisgICAgICAgIC8v
IFJlcGxhY2UgdGhlIENDT3ZlcmRyYXdNZXRyaWNzIHdpdGggb25lIHRoYXQgd2lsbCBjb3VudCBh
cyB0aGUgdGVzdCBkZXNpcmVzLgorICAgICAgICBtX292ZXJkcmF3TWV0cmljcyA9IENDT3ZlcmRy
YXdNZXRyaWNzOjpjcmVhdGUoY291bnRlcik7CisgICAgfQorfTsKKwogc3RhdGljIFBhc3NPd25Q
dHI8Q0NUaWxlZExheWVySW1wbD4gbWFrZUxheWVyKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGZsb2F0IG9wYWNpdHks
IGJvb2wgb3BhcXVlLCBjb25zdCBJbnRSZWN0JiBsYXllck9wYXF1ZVJlY3QpCiB7CiAgICAgT3du
UHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gQ0NUaWxlZExheWVySW1wbDo6Y3JlYXRlKDAp
OwpAQCAtNzgsMTcgKzkzLDE5IEBAIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZWRMYXllckltcGw+
IG1ha2VMYXllcihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyCiAgICAgcmV0dXJu
IGxheWVyLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkTGlz
dCYgcXVhZExpc3QsIENDVGlsZWRMYXllckltcGwqIGxheWVyLCBDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsJiBvY2NsdXNpb25UcmFja2VyKQorc3RhdGljIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkTGlz
dCYgcXVhZExpc3QsIENDVGlsZWRMYXllckltcGwqIGxheWVyLCBDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsJiBvY2NsdXNpb25UcmFja2VyLCBWZWN0b3I8T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiA+
JiBzaGFyZWRTdGF0ZUxpc3QpCiB7CiAgICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIocXVhZExp
c3QsIGxheWVyLCAmb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAg
ICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7
CisgICAgc2hhcmVkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsK
IH0KIAogI2RlZmluZSBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMgICAgICAgICAg
ICAgICBcCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7ICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICBDQ1F1YWRMaXN0IHF1YWRMaXN0OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOyAgICAg
ICAgICAgICAgICBcCisgICAgVmVjdG9yPE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gPiBzaGFy
ZWRTdGF0ZUxpc3Q7IFwKICAgICBJbnRTaXplIHJvb3RTaXplID0gSW50U2l6ZSgzMDAsIDMwMCk7
ICAgICAgICAgICAgICAgXAogICAgIEludFJlY3Qgcm9vdFJlY3QgPSBJbnRSZWN0KEludFBvaW50
KCksIHJvb3RTaXplKTsgICBcCiAgICAgSW50U2l6ZSBjaGlsZFNpemUgPSBJbnRTaXplKDIwMCwg
MjAwKTsgICAgICAgICAgICAgIFwKQEAgLTEwMiw4ICsxMTksOCBAQCBURVNUKENDUXVhZEN1bGxl
clRlc3QsIHZlcmlmeU5vQ3VsbGluZykKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hp
bGRMYXllciA9IG1ha2VMYXllcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEu
MCwgdHJ1ZSwgSW50UmVjdCgpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2Ns
dXNpb25UcmFja2VyKEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgYXBw
ZW5kUXVhZHMocXVhZExpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOwot
ICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNr
ZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNp
b25UcmFja2VyLCBzaGFyZWRTdGF0ZUxpc3QpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBy
b290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7CiAgICAg
RVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNp
b25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDEzMDAwMCwg
MSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5w
aXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDAsIDEpOwpAQCAtMTE4LDkgKzEzNSw5IEBAIFRFU1Qo
Q0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENoaWxkTGluZXNVcFRvcExlZnQpCiAgICAgT3du
UHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIoVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7CiAgICAgVGVzdEND
T2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KC0xMDAsIC0xMDAs
IDEwMDAsIDEwMDApKTsKIAotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBjaGlsZExheWVyLmdl
dCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hpbGRM
YXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAgICBvY2Ns
dXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwot
ICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNr
ZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lv
blRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUo
KSwgOXUpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNz
KCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgOTAwMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1
c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCAw
LCAxKTsKQEAgLTEzNSw5ICsxNTIsOSBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1
bGxXaGVuQ2hpbGRPcGFjaXR5Tm90T25lKQogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBj
aGlsZExheWVyID0gbWFrZUxheWVyKGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDAuOSwgdHJ1
ZSwgSW50UmVjdCgpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25U
cmFja2VyKEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgYXBwZW5kUXVh
ZHMocXVhZExpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFw
cGVuZFF1YWRzKHF1YWRMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBz
aGFyZWRTdGF0ZUxpc3QpOwogICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIoY2hpbGRMYXllci5nZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RM
YXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3Qs
IHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAg
ICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1
c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgOTAwMDAs
IDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCku
cGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCA0MDAwMCwgMSk7CkBAIC0xNTIsOSArMTY5LDkgQEAg
VEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsV2hlbkNoaWxkT3BhcXVlRmxhZ0ZhbHNl
KQogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKGNo
aWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgZmFsc2UsIEludFJlY3QoKSk7CiAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KC0xMDAsIC0x
MDAsIDEwMDAsIDEwMDApKTsKIAotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBjaGlsZExheWVy
LmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hp
bGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAgICBv
Y2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkp
OwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRy
YWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1
c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNp
emUoKSwgMTN1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0
cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDkwMDAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihv
Y2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQo
KSwgNDAwMDAsIDEpOwpAQCAtMTcxLDkgKzE4OCw5IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwg
dmVyaWZ5Q3VsbENlbnRlclRpbGVPbmx5KQogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBj
aGlsZExheWVyID0gbWFrZUxheWVyKGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgdHJ1
ZSwgSW50UmVjdCgpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25U
cmFja2VyKEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgYXBwZW5kUXVh
ZHMocXVhZExpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFw
cGVuZFF1YWRzKHF1YWRMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBz
aGFyZWRTdGF0ZUxpc3QpOwogICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIoY2hpbGRMYXllci5nZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RM
YXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3Qs
IHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAg
ICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOwogCiAgICAgSW50UmVjdCBxdWFkVmlz
aWJsZVJlY3QxID0gcXVhZExpc3RbNV0uZ2V0KCktPnF1YWRWaXNpYmxlUmVjdCgpOwpAQCAtMjE0
LDkgKzIzMSw5IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENlbnRlclRpbGVO
b25JbnRlZ3JhbFNpemUxKQogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVy
ID0gbWFrZUxheWVyKGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVj
dCgpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKElu
dFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExp
c3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRz
KHF1YWRMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBzaGFyZWRTdGF0
ZUxpc3QpOwogICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hp
bGRMYXllci5nZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RMYXllci5nZXQo
KSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RMYXll
ci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAgICBFWFBFQ1Rf
RVEocXVhZExpc3Quc2l6ZSgpLCAydSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFj
a2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDIwMzYzLCAxKTsKQEAg
LTI0Miw5ICsyNTksOSBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDZW50ZXJU
aWxlTm9uSW50ZWdyYWxTaXplMikKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRM
YXllciA9IG1ha2VMYXllcihjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIElu
dFJlY3QoKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tl
cihJbnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAsIDEwMDApKTsKIAotICAgIGFwcGVuZFF1YWRzKHF1
YWRMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRR
dWFkcyhxdWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVk
U3RhdGVMaXN0KTsKICAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCByb290TGF5ZXIu
Z2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCByb290
TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7CiAgICAgRVhQ
RUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMnUpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9u
VHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAxOTY0MywgMSk7
CkBAIC0yNjIsOSArMjc5LDkgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2hp
bGRMaW5lc1VwQm90dG9tUmlnaHQpCiAgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxk
TGF5ZXIgPSBtYWtlTGF5ZXIoY2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJ
bnRSZWN0KCkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNr
ZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICBhcHBlbmRRdWFkcyhx
dWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5k
UXVhZHMocXVhZExpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJl
ZFN0YXRlTGlzdCk7CiAgICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVy
LmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9v
dExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBzaGFyZWRTdGF0ZUxpc3QpOwogICAgIEVY
UEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDl1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25U
cmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDkwMDAwLCAxKTsK
ICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVs
c0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7CkBAIC0yODIsOSArMjk5LDkgQEAgVEVTVChDQ1F1
YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uKQogICAgIE93blB0cjxDQ1RpbGVkTGF5
ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3Qs
IDEuMCwgZmFsc2UsIGNoaWxkT3BhcXVlUmVjdCk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tl
ckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAsIDEwMDApKTsK
IAotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25U
cmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2Nj
bHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAgICBvY2NsdXNpb25UcmFja2VyLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRz
KHF1YWRMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVu
ZFF1YWRzKHF1YWRMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJl
ZFN0YXRlTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTJ1KTsKICAgICBF
WFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXdu
T3BhcXVlKCksIDkwMDAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92
ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMzAwMDAsIDEpOwpAQCAt
MzAyLDkgKzMxOSw5IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lv
bjIpCiAgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIo
Y2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwgMS4wLCBmYWxzZSwgY2hpbGRPcGFxdWVSZWN0KTsK
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3Qo
LTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIGNo
aWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRM
aXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBzaGFyZWRTdGF0ZUxpc3Qp
OwogICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGRMYXll
ci5nZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RMYXllci5nZXQoKSwgb2Nj
bHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RMYXllci5nZXQo
KSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAgICBFWFBFQ1RfRVEocXVh
ZExpc3Quc2l6ZSgpLCAxMnUpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3Zl
cmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgOTAwMDAsIDEpOwogICAgIEVYUEVD
VF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFu
c2x1Y2VudCgpLCAyNTAwMCwgMSk7CkBAIC0zMjIsOSArMzM5LDkgQEAgVEVTVChDQ1F1YWRDdWxs
ZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uQ2hlY2tPdmVyY3VsbCkKICAgICBPd25QdHI8Q0NU
aWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihjaGlsZFRyYW5zZm9ybSwgY2hp
bGRSZWN0LCAxLjAsIGZhbHNlLCBjaGlsZE9wYXF1ZVJlY3QpOwogICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAx
MDAwKSk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2Nj
bHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIGNoaWxkTGF5ZXIuZ2V0
KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7CiAgICAgb2NjbHVzaW9uVHJh
Y2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBl
bmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAg
ICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2Vy
LCBzaGFyZWRTdGF0ZUxpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7
CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhl
bHNEcmF3bk9wYXF1ZSgpLCA5MDAwMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJh
Y2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDMwMDAwLCAx
KTsKQEAgLTM0Miw5ICszNTksOSBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeU5vbkF4
aXNBbGlnbmVkUXVhZHNEb250T2NjbHVkZSkKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4g
Y2hpbGRMYXllciA9IG1ha2VMYXllcihjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIHRy
dWUsIEludFJlY3QoKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9u
VHJhY2tlcihJbnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAsIDEwMDApKTsKIAotICAgIGFwcGVuZFF1
YWRzKHF1YWRMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBh
cHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlciwg
c2hhcmVkU3RhdGVMaXN0KTsKICAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGlu
ZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCByb290
TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0
LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7CiAg
ICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKICAgICBFWFBFQ1RfTkVBUihvY2Ns
dXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDEzMDAw
MCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3Mo
KS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDAsIDEpOwpAQCAtMzY4LDkgKzM4NSw5IEBAIFRF
U1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Tm9uQXhpc0FsaWduZWRRdWFkc1NhZmVseUN1bGxl
ZCkKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsK
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3Qo
LTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIGNo
aWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRM
aXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBzaGFyZWRTdGF0ZUxpc3Qp
OwogICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGRMYXll
ci5nZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RMYXllci5nZXQoKSwgb2Nj
bHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RMYXllci5nZXQo
KSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAgICBFWFBFQ1RfRVEocXVh
ZExpc3Quc2l6ZSgpLCAxMnUpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3Zl
cmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgMTAwNjAwLCAxKTsKICAgICBFWFBF
Q1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJh
bnNsdWNlbnQoKSwgMCwgMSk7CkBAIC0zODUsOSArNDAyLDkgQEAgVEVTVChDQ1F1YWRDdWxsZXJU
ZXN0LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNzb3JPdmVyVGlsZSkKICAgICBPd25QdHI8Q0NUaWxl
ZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7
CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9u
VHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9j
Y2x1c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7CiAgICAgb2NjbHVzaW9uVHJhY2tlci5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRRdWFk
cyhxdWFkTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBl
bmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBzaGFy
ZWRTdGF0ZUxpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDF1KTsKICAgICBF
WFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXdu
T3BhcXVlKCksIDEwMDAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92
ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7CkBAIC00MDIs
OSArNDE5LDkgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNz
b3JPdmVyQ3VsbGVkVGlsZSkKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXll
ciA9IG1ha2VMYXllcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEuMCwgdHJ1
ZSwgSW50UmVjdCgpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25U
cmFja2VyKEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7CiAKLSAgICBhcHBlbmRRdWFkcyhx
dWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5k
UXVhZHMocXVhZExpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJl
ZFN0YXRlTGlzdCk7CiAgICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVy
LmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9v
dExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBzaGFyZWRTdGF0ZUxpc3QpOwogICAgIEVY
UEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDF1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25U
cmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDEwMDAwLCAxKTsK
ICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVs
c0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7CkBAIC00MTksOSArNDM2LDkgQEAgVEVTVChDQ1F1
YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNzb3JPdmVyUGFydGlhbFRpbGVzKQog
ICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwogICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCg1MCwg
NTAsIDIwMCwgMjAwKSk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hpbGRMYXllci5n
ZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIGNoaWxk
TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7CiAgICAgb2Nj
bHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsK
LSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFj
a2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNp
b25UcmFja2VyLCBzaGFyZWRTdGF0ZUxpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXpl
KCksIDl1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmlj
cygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDQwMDAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2Ns
dXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwg
MCwgMSk7CkBAIC00MzYsMTMgKzQ1Myw1OCBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlm
eUN1bGxPdXRzaWRlU2Npc3Nvck92ZXJOb1RpbGVzKQogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJ
bXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxk
UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCg1MDAsIDUwMCwgMTAwLCAxMDApKTsKIAotICAg
IGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2Vy
KTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9u
VHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2Ns
dWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRM
aXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRz
KHF1YWRMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRl
TGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMHUpOwogICAgIEVYUEVDVF9O
RUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUo
KSwgMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJp
Y3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9j
Y2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzQ3VsbGVkKCksIDEzMDAwMCwg
MSk7CiB9CiAKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5T3ZlcmRyYXdNZXRyaWNzVGhy
b3R0bGluZykKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKKworICAg
IE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBPd25Q
dHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBDQ092ZXJk
cmF3TWV0cmljczo6RnJhbWVDb3VudGVyIGZyYW1lQ291bnRlcigwLjIpOworCisgICAgeworICAg
ICAgICAvLyBBbHdheXMgY291bnRzIHRoZSBmaXJzdCBmcmFtZS4KKyAgICAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlckltcGxXaXRoTWV0cmljcyBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoNTAs
IDUwLCAyMDAsIDIwMCksIGZyYW1lQ291bnRlcik7CisgICAgICAgIGFwcGVuZFF1YWRzKHF1YWRM
aXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBzaGFyZWRTdGF0ZUxpc3Qp
OworICAgICAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxk
TGF5ZXIuZ2V0KCkpOworICAgICAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVyLmdl
dCgpLCBvY2NsdXNpb25UcmFja2VyLCBzaGFyZWRTdGF0ZUxpc3QpOworICAgICAgICBFWFBFQ1Rf
RVEocXVhZExpc3Quc2l6ZSgpLCA5dSk7CisgICAgICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRy
YWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgNDAwMDAsIDEpOwor
ICAgICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBp
eGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7CisgICAgICAgIEVYUEVDVF9ORUFSKG9jY2x1
c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzQ3VsbGVkKCksIDkwMDAwLCAxKTsK
KyAgICB9CisKKyAgICAvLyBTaG91bGQgbm90IGNvdW50IHRoZSBuZXh0IGZvdXIgZnJhbWVzLgor
ICAgIGZvciAoaW50IGkgPSAyOyBpIDwgNjsgKytpKSB7CisgICAgICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJJbXBsV2l0aE1ldHJpY3Mgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KDUwLCA1MCwg
MjAwLCAyMDApLCBmcmFtZUNvdW50ZXIpOworICAgICAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwg
Y2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKKyAg
ICAgICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVy
LmdldCgpKTsKKyAgICAgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RMYXllci5nZXQoKSwg
b2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKKyAgICAgICAgRVhQRUNUX0VRKHF1
YWRMaXN0LnNpemUoKSwgaSAqIDl1KTsKKyAgICAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJh
Y2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAwLCAxKTsKKyAgICAg
ICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNE
cmF3blRyYW5zbHVjZW50KCksIDAsIDEpOworICAgICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25U
cmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0N1bGxlZCgpLCAwLCAxKTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIC8vIFRoZSBzaXh0aCBmcmFtZSBpcyBjb3VudGVkIGFnYWluLgorICAg
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbFdpdGhNZXRyaWNzIG9jY2x1c2lvblRyYWNr
ZXIoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSwgZnJhbWVDb3VudGVyKTsKKyAgICAgICAgYXBw
ZW5kUXVhZHMocXVhZExpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNo
YXJlZFN0YXRlTGlzdCk7CisgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIoY2hpbGRMYXllci5nZXQoKSk7CisgICAgICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0
LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7Cisg
ICAgICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDYgKiA5dSk7CisgICAgICAgIEVYUEVD
VF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFx
dWUoKSwgNDAwMDAsIDEpOworICAgICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92
ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7CisgICAgICAg
IEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzQ3Vs
bGVkKCksIDkwMDAwLCAxKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132423</attachid>
            <date>2012-03-16 17:23:48 -0700</date>
            <delta_ts>2012-03-16 19:17:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81431-20120316202346.patch</filename>
            <type>text/plain</type>
            <size>31232</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRlZGNkMzc3OTAwNjc0
YmNkNzEyNzAxNTA4MmFlMjNkMDc1OTk1MC4uOWMxODM0Y2MzNjdkMTkzNmE2NDU4OWY1ZjRlY2Mw
NTY5YjgwOGU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTAzLTE2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVGhy
b3R0bGUgb3ZlcmRyYXcgbWV0cmljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODE0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIGFsbG93cyB0aGUgY3JlYXRvciBvZiBhIENDT3ZlcmRyYXdNZXRy
aWNzIG9iamVjdCB0byBzZXQKKyAgICAgICAgYSByYXRlIGF0IHdoaWNoIHRoZSBtZXRyaWNzIHdp
bGwgYmUgcmVjb3JkZWQuIEl0IGlzIGFzc3VtZWQKKyAgICAgICAgdGhhdCBhIG5ldyBDQ092ZXJk
cmF3TWV0cmljcyBpcyBjcmVhdGVkIGZvciBlYWNoIGZyYW1lLiBTbworICAgICAgICBldmVyeSAx
L24tdGggY3JlYXRpb24gb2YgdGhlIENDT3ZlcmRyYXdNZXRyaWNzLCB3ZSBhbGxvdyBpdAorICAg
ICAgICB0byByZWNvcmQuCisKKyAgICAgICAgVGhlIHByb2JsZW0gaXMgdGhhdCB3ZSByZWNvcmQg
dHdpY2UgZm9yIGVhY2ggZnJhbWUgLSBvbmNlIGZvcgorICAgICAgICB1cGxvYWQgYW5kIG9uY2Ug
Zm9yIGRyYXcuIEFuZCB3ZSB3YW50IHRoZSBzYW1wbGluZyByYXRlcyB0byBiZQorICAgICAgICBp
bmRlcGVuZGVudCBmcm9tIGVhY2ggb3RoZXIuIFdlIHNvbHZlIHRoaXMgYnkgaW50cm9kdWNpbmcg
YQorICAgICAgICBDQ092ZXJkcmF3TWV0cmljczo6RnJhbWVDb3VudGVyIG9iamVjdCwgYSBjb3B5
IG9mIHdoaWNoIGNhbgorICAgICAgICBiZSBoZWxkIGZvciBlYWNoIGNvbnRleHQgaW4gd2hpY2gg
eW91IGFyZSByZWNvcmRpbmcuIFRoaXMKKyAgICAgICAgb2JqZWN0IGRlY2lkZXMgaWYgdGhlIGN1
cnJlbnQgbWV0cmljcyBvYmplY3Qgc2hvdWxkIHJlY29yZAorICAgICAgICBvciBub3QuCisKKyAg
ICAgICAgVW5pdCB0ZXN0OiBDQ1F1YWRDdWxsZXJUZXN0LnZlcmlmeU92ZXJkcmF3TWV0cmljc1Ro
cm90dGxpbmcKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2Nj
bHVzaW9uVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN1cmZhY2VDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6OjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaDoK
KyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlckJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDT3ZlcmRyYXdNZXRyaWNzOjpDQ092ZXJkcmF3TWV0cmljcyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ092ZXJkcmF3TWV0cmljczo6ZGlkQ3VsbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ092
ZXJkcmF3TWV0cmljczo6ZGlkRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ092ZXJkcmF3TWV0
cmljczo6cmVjb3JkTWV0cmljcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
RnJhbWVDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT3ZlcmRyYXdNZXRyaWNzOjpGcmFt
ZUNvdW50ZXI6OkZyYW1lQ291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ092ZXJkcmF3TWV0
cmljczo6RnJhbWVDb3VudGVyOjpjdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NP
dmVyZHJhd01ldHJpY3M6OkZyYW1lQ291bnRlcjo6c2hvdWxkQ291bnROZXdGcmFtZSk6CisgICAg
ICAgIChDQ092ZXJkcmF3TWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ092ZXJkcmF3TWV0
cmljczo6Y3JlYXRlKToKKwogMjAxMi0wMy0xNiAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgRml4IHJvdW5kaW5nIGFuZCB1c2FnZSBvZiBMYXlvdXRVbml0cyBp
biBSZW5kZXJCb3hNb2RlbE9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1NjA2
ZmIwOWE5ZjQ5OTY4NzdjNWFmZTZlMWUxZGNjNjU5Y2YzZDc3Li41YTI2MTM4ZWFmYWEyZDdlNDEx
MWJiNmEyNWVhMjc1NzJiNzFmNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE5IEBACisyMDEyLTAzLTE2ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFtjaHJvbWl1bV0gVGhyb3R0bGUgb3ZlcmRyYXcgbWV0cmljcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0MzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDUXVhZEN1
bGxlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlcklt
cGw6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsKToKKyAgICAgICAgKFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJJbXBsKToKKyAgICAgICAgKFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsV2l0aE1l
dHJpY3MpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGxXaXRo
TWV0cmljczo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGxXaXRoTWV0cmljcyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlRFU1QpOgorCiAyMDEyLTAzLTE1ICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVmYWN0b3IgQ2xpcGJvYXJkQ2hyb21pdW0g
YW5kIERhdGFUcmFuc2Zlckl0ZW1MaXN0L0RhdGFUcmFuc2Zlckl0ZW0gdG8gc3VwcG9ydCBIVE1M
IHNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCmluZGV4IGM2OWE0ZDlj
ODFkMjE0OGFlMGFjN2Q3ODk5MDYxMmE4ZmViZjk1YjIuLmM4NWI3ZTYyZWU1MzZkMWM5MDVlMDg0
YmYwMzUyN2VkOTU0YWUzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNw
cApAQCAtMzgsMTAgKzM4LDI1IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorLy8gS2VlcCBhIHNlcGFyYXRlIGZyYW1lIGNvdW50ZXIgZm9yIGVhY2ggdGhy
ZWFkLiBUaGVzZSBtZXRob2QgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIHN0YXRpYywgc28gYXJlIG5h
bWVkIHZlcmJvc2VseS4KK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVu
ZGVyU3VyZmFjZVR5cGU+IENDT3ZlcmRyYXdNZXRyaWNzOjpGcmFtZUNvdW50ZXImIG92ZXJkcmF3
TWV0cmljc0ZyYW1lQ291bnRlckZvck9jY2x1c2lvblRyYWNrZXIoKTsKKwordGVtcGxhdGU8PiBD
Q092ZXJkcmF3TWV0cmljczo6RnJhbWVDb3VudGVyJiBvdmVyZHJhd01ldHJpY3NGcmFtZUNvdW50
ZXJGb3JPY2NsdXNpb25UcmFja2VyPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1
bT4oKQoreworICAgIHN0YXRpYyBDQ092ZXJkcmF3TWV0cmljczo6RnJhbWVDb3VudGVyIG1haW5U
aHJlYWRDb3VudGVyKDAuMSk7CisgICAgcmV0dXJuIG1haW5UaHJlYWRDb3VudGVyOworfQorCit0
ZW1wbGF0ZTw+IENDT3ZlcmRyYXdNZXRyaWNzOjpGcmFtZUNvdW50ZXImIG92ZXJkcmF3TWV0cmlj
c0ZyYW1lQ291bnRlckZvck9jY2x1c2lvblRyYWNrZXI8Q0NMYXllckltcGwsIENDUmVuZGVyU3Vy
ZmFjZT4oKQoreworICAgIHN0YXRpYyBDQ092ZXJkcmF3TWV0cmljczo6RnJhbWVDb3VudGVyIGlt
cGxUaHJlYWRDb3VudGVyKDAuMSk7CisgICAgcmV0dXJuIGltcGxUaHJlYWRDb3VudGVyOworfQor
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBl
PgogQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6
Q0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSkK
LSAgICA6IG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlKHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFj
ZSkKLSAgICAsIG1fb3ZlcmRyYXdNZXRyaWNzKENDT3ZlcmRyYXdNZXRyaWNzOjpjcmVhdGUoKSkK
KyAgICA6IG1fb3ZlcmRyYXdNZXRyaWNzKENDT3ZlcmRyYXdNZXRyaWNzOjpjcmVhdGUob3ZlcmRy
YXdNZXRyaWNzRnJhbWVDb3VudGVyRm9yT2NjbHVzaW9uVHJhY2tlcjxMYXllclR5cGUsIFJlbmRl
clN1cmZhY2VUeXBlPigpKSkKKyAgICAsIG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlKHNjaXNz
b3JSZWN0SW5TY3JlZW5TcGFjZSkKICAgICAsIG1fdXNlUGFpbnRUcmFja2luZyh0cnVlKSAvLyBG
SVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBwYWludCB0cmFja2luZyBpcyBvbiBmb3IgcGFpbnQgY3Vs
bGluZy4KIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgKaW5kZXggMjgyZGVm
ZmRmMjU2NGJlM2Y5MDEzZDJlOTIwMjZlOWI4ZDZlMmFmZC4uOGViZDY0NzBiNzQwNmY0MDk0NGUw
YzJlNTlhNTYxYTU4M2Q1MjA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmgK
QEAgLTk1LDEyICs5NSwxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gV2UgbWVyZ2UgdGhlIG9jY2x1
c2lvbiBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjayB3aXRoIHRoZSBuZXcgY3VycmVudCBzdWJ0cmVl
LiBUaGlzIG5ldyB0YXJnZXQgaXMgcHVzaGVkIG9udG8gdGhlIHN0YWNrIGlmIG5vdCBhbHJlYWR5
IHRoZXJlLgogICAgIFZlY3RvcjxTdGFja09iamVjdCwgMT4gbV9zdGFjazsKIAorICAgIE93blB0
cjxDQ092ZXJkcmF3TWV0cmljcz4gbV9vdmVyZHJhd01ldHJpY3M7CisKICAgICAvLyBBbGxvdyB0
ZXN0cyB0byBvdmVycmlkZSB0aGlzLgogICAgIHZpcnR1YWwgSW50UmVjdCBsYXllclNjaXNzb3JS
ZWN0SW5UYXJnZXRTdXJmYWNlKGNvbnN0IExheWVyVHlwZSopIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIEludFJlY3QgbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2U7Ci0gICAgT3duUHRyPENDT3Zl
cmRyYXdNZXRyaWNzPiBtX292ZXJkcmF3TWV0cmljczsKICAgICBib29sIG1fdXNlUGFpbnRUcmFj
a2luZzsgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gcGFpbnQgdHJhY2tpbmcgaXMgb24gZm9y
IHBhaW50IGN1bGxpbmcuCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5jcHAK
aW5kZXggYTc3ZGM2OWYwNjFiNTA4M2I4OGM4YjU4ZjI5MDhjM2M0OTUwNjRjNC4uYjlmNzExNTNm
OGFkYjM2OWRlNTYzMDZjZmU2YTc1ZGJiMmZjMzc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRy
YXdNZXRyaWNzLmNwcApAQCAtMzcsOCArMzcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUNDT3ZlcmRyYXdNZXRyaWNzOjpDQ092ZXJkcmF3TWV0cmljcygpCi0gICAgOiBtX3BpeGVsc0Ry
YXduT3BhcXVlKDApCitDQ092ZXJkcmF3TWV0cmljczo6Q0NPdmVyZHJhd01ldHJpY3MoRnJhbWVD
b3VudGVyJiBjb3VudGVyKQorICAgIDogbV9jb3VudFRoaXNGcmFtZShjb3VudGVyLnNob3VsZENv
dW50TmV3RnJhbWUoKSkKKyAgICAsIG1fcGl4ZWxzRHJhd25PcGFxdWUoMCkKICAgICAsIG1fcGl4
ZWxzRHJhd25UcmFuc2x1Y2VudCgwKQogICAgICwgbV9waXhlbHNDdWxsZWQoMCkKIHsKQEAgLTYw
LDYgKzYxLDkgQEAgc3RhdGljIGlubGluZSBmbG9hdCBxdWFkQXJlYShjb25zdCBGbG9hdFF1YWQm
IHF1YWQpCiAKIHZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OmRpZEN1bGwoY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZ2V0LCBjb25zdCBJbnRSZWN0JiBiZWZvcmVDdWxs
UmVjdCwgY29uc3QgSW50UmVjdCYgYWZ0ZXJDdWxsUmVjdCkKIHsKKyAgICBpZiAoIW1fY291bnRU
aGlzRnJhbWUpCisgICAgICAgIHJldHVybjsKKwogICAgIGZsb2F0IGJlZm9yZUN1bGxBcmVhID0g
cXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1YWQoYmVmb3JlQ3VsbFJl
Y3QpKSk7CiAgICAgZmxvYXQgYWZ0ZXJDdWxsQXJlYSA9IHF1YWRBcmVhKHRyYW5zZm9ybVRvVGFy
Z2V0Lm1hcFF1YWQoRmxvYXRRdWFkKGFmdGVyQ3VsbFJlY3QpKSk7CiAKQEAgLTY4LDYgKzcyLDkg
QEAgdm9pZCBDQ092ZXJkcmF3TWV0cmljczo6ZGlkQ3VsbChjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQsIGMKIAogdm9pZCBDQ092ZXJkcmF3TWV0cmljczo6ZGlk
RHJhdyhjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQsIGNvbnN0
IEludFJlY3QmIGFmdGVyQ3VsbFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpCiB7Cisg
ICAgaWYgKCFtX2NvdW50VGhpc0ZyYW1lKQorICAgICAgICByZXR1cm47CisKICAgICBmbG9hdCBh
ZnRlckN1bGxBcmVhID0gcXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1
YWQoYWZ0ZXJDdWxsUmVjdCkpKTsKICAgICBmbG9hdCBhZnRlckN1bGxPcGFxdWVBcmVhID0gcXVh
ZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1YWQoaW50ZXJzZWN0aW9uKG9w
YXF1ZVJlY3QsIGFmdGVyQ3VsbFJlY3QpKSkpOwogCkBAIC03NywxMiArODQsMTQgQEAgdm9pZCBD
Q092ZXJkcmF3TWV0cmljczo6ZGlkRHJhdyhjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtVG9UYXJnZXQsIGMKIAogdm9pZCBDQ092ZXJkcmF3TWV0cmljczo6cmVjb3JkTWV0cmlj
cyhjb25zdCBDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpIGNvbnN0CiB7Ci0gICAgcmVj
b3JkTWV0cmljc0ludGVybmFsPENDTGF5ZXJUcmVlSG9zdD4oVVBMT0FESU5HLCBsYXllclRyZWVI
b3N0KTsKKyAgICBpZiAobV9jb3VudFRoaXNGcmFtZSkKKyAgICAgICAgcmVjb3JkTWV0cmljc0lu
dGVybmFsPENDTGF5ZXJUcmVlSG9zdD4oVVBMT0FESU5HLCBsYXllclRyZWVIb3N0KTsKIH0KIAog
dm9pZCBDQ092ZXJkcmF3TWV0cmljczo6cmVjb3JkTWV0cmljcyhjb25zdCBDQ0xheWVyVHJlZUhv
c3RJbXBsKiBsYXllclRyZWVIb3N0KSBjb25zdAogewotICAgIHJlY29yZE1ldHJpY3NJbnRlcm5h
bDxDQ0xheWVyVHJlZUhvc3RJbXBsPihEUkFXSU5HLCBsYXllclRyZWVIb3N0KTsKKyAgICBpZiAo
bV9jb3VudFRoaXNGcmFtZSkKKyAgICAgICAgcmVjb3JkTWV0cmljc0ludGVybmFsPENDTGF5ZXJU
cmVlSG9zdEltcGw+KERSQVdJTkcsIGxheWVyVHJlZUhvc3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBMYXllclRyZWVIb3N0VHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5oCmlu
ZGV4IDQ4OWNhNTY5YzUyNTUzODljY2YzMDJhNGMzOGNkODdmNjIwY2MxZjQuLjE0MTFjM2ExM2U1
MWZlMmFiNzA4OGI4Mzk2MjkxM2YzOTk0MzQ3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01l
dHJpY3MuaApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBDQ092ZXJkcmF3TWV0cmljc19oCiAj
ZGVmaW5lIENDT3ZlcmRyYXdNZXRyaWNzX2gKIAorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzMsMTAgKzM0LDIyIEBAIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogY2xhc3MgQ0NMYXll
clRyZWVIb3N0OwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIAotLy8gRklYTUU6IGNvbXB1
dGUgb3ZlcmRyYXcgbWV0cmljcyBvbmx5IG9jY2FzaW9uYWxseSwgbm90IGV2ZXJ5IGZyYW1lLgog
Y2xhc3MgQ0NPdmVyZHJhd01ldHJpY3MgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PENDT3ZlcmRyYXdNZXRyaWNzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NPdmVy
ZHJhd01ldHJpY3MoKSk7IH0KKyAgICBjbGFzcyBGcmFtZUNvdW50ZXIgeworICAgIHB1YmxpYzoK
KyAgICAgICAgRnJhbWVDb3VudGVyKGRvdWJsZSBwZXJjZW50YWdlT2ZGcmFtZXMpIDogbV9mcmFt
ZSgwKSwgbV9jb3VudE9uZUZyYW1lSW5FYWNoKHJvdW5kKDEgLyBwZXJjZW50YWdlT2ZGcmFtZXMp
KSB7IH0KKyAgICAgICAgaW50IGN1cnJlbnRGcmFtZSgpIHsgcmV0dXJuIG1fZnJhbWU7IH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgc2hvdWxkQ291bnROZXdGcmFtZSgpIHsgcmV0dXJu
ICEobV9mcmFtZSsrICUgbV9jb3VudE9uZUZyYW1lSW5FYWNoKTsgfQorCisgICAgICAgIGludCBt
X2ZyYW1lOworICAgICAgICBpbnQgbV9jb3VudE9uZUZyYW1lSW5FYWNoOworICAgICAgICBmcmll
bmQgY2xhc3MgQ0NPdmVyZHJhd01ldHJpY3M7CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzT3du
UHRyPENDT3ZlcmRyYXdNZXRyaWNzPiBjcmVhdGUoRnJhbWVDb3VudGVyJiBjb3VudGVyKSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgQ0NPdmVyZHJhd01ldHJpY3MoY291bnRlcikpOyB9CiAKICAgICB2
b2lkIGRpZEN1bGwoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZ2V0
LCBjb25zdCBJbnRSZWN0JiBiZWZvcmVDdWxsUmVjdCwgY29uc3QgSW50UmVjdCYgYWZ0ZXJDdWxs
UmVjdCk7CiAgICAgdm9pZCBkaWREcmF3KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm1Ub1RhcmdldCwgY29uc3QgSW50UmVjdCYgYWZ0ZXJDdWxsUmVjdCwgY29uc3QgSW50UmVj
dCYgb3BhcXVlUmVjdCk7CkBAIC01MCw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBwaXhl
bHNDdWxsZWQoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsc0N1bGxlZDsgfQogCiBwcml2YXRlOgot
ICAgIENDT3ZlcmRyYXdNZXRyaWNzKCk7CisgICAgQ0NPdmVyZHJhd01ldHJpY3MoRnJhbWVDb3Vu
dGVyJik7CiAKICAgICBlbnVtIE1ldHJpY3NUeXBlIHsKICAgICAgICAgRFJBV0lORywKQEAgLTYw
LDYgKzczLDggQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclRyZWVIb3N0
VHlwZT4KICAgICB2b2lkIHJlY29yZE1ldHJpY3NJbnRlcm5hbChNZXRyaWNzVHlwZSwgY29uc3Qg
TGF5ZXJUcmVlSG9zdFR5cGUqKSBjb25zdDsKIAorICAgIC8vIFdoZW4gZmFsc2UsIHRoaXMgY2xh
c3MgaXMgYSBnaWFudCBuby1vcC4KKyAgICBib29sIG1fY291bnRUaGlzRnJhbWU7CiAgICAgLy8g
Q291bnQgb2YgcGl4ZWxzIHRoYXQgYXJlIG9wYXF1ZSAoYW5kIHRodXMgb2NjbHVkZSkuIElkZWFs
bHkgdGhpcyBpcyBubyBtb3JlCiAgICAgLy8gdGhhbiB3aWV3cG9ydCB3aWR0aCB4IGhlaWdodC4K
ICAgICBmbG9hdCBtX3BpeGVsc0RyYXduT3BhcXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggMTU4YjBjMDhiNzBmMWMxZjg2
OTdkNzEyOTBiYjljZTZlNmQzYjdhNC4uZmM4NGFmZGFmMmQ4YmRjYjkwZmY1ZWQ3OThhNDViMWJh
M2M0NjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRD
dWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1
bGxlclRlc3QuY3BwCkBAIC00Miw4ICs0MiwxMiBAQCBjbGFzcyBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VySW1wbCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJJbXBsIHsKIHB1YmxpYzoKICAgICBU
ZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbChjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdEluU2Ny
ZWVuKQogICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlckltcGwoc2Npc3NvclJlY3RJblNjcmVl
bikKKyAgICAgICAgLCBtX2ZyYW1lQ291bnRlcigxLjApCiAgICAgICAgICwgbV9zY2lzc29yUmVj
dEluU2NyZWVuKHNjaXNzb3JSZWN0SW5TY3JlZW4pCiAgICAgeworICAgICAgICAvLyBSZXBsYWNl
IHRoZSBDQ092ZXJkcmF3TWV0cmljcyB3aXRoIG9uZSB0aGF0IHdpbGwgY291bnQgZXZlcnkgZnJh
bWUgKGFuZCBldmVyeSB0ZXN0KQorICAgICAgICBtX292ZXJkcmF3TWV0cmljcyA9IENDT3ZlcmRy
YXdNZXRyaWNzOjpjcmVhdGUobV9mcmFtZUNvdW50ZXIpOworCiAgICAgICAgIC8vIFByZXRlbmQg
d2UgaGF2ZSB2aXNpdGVkIGEgcmVuZGVyIHN1cmZhY2UuCiAgICAgICAgIG1fc3RhY2suYXBwZW5k
KFN0YWNrT2JqZWN0KCkpOwogICAgIH0KQEAgLTUyLDkgKzU2LDIwIEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIEludFJlY3QgbGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShjb25zdCBD
Q0xheWVySW1wbCogbGF5ZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2Npc3NvclJlY3RJblNjcmVlbjsg
fQogCiBwcml2YXRlOgorICAgIENDT3ZlcmRyYXdNZXRyaWNzOjpGcmFtZUNvdW50ZXIgbV9mcmFt
ZUNvdW50ZXI7CiAgICAgSW50UmVjdCBtX3NjaXNzb3JSZWN0SW5TY3JlZW47CiB9OwogCitjbGFz
cyBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbFdpdGhNZXRyaWNzIDogcHVibGljIFRlc3RDQ09j
Y2x1c2lvblRyYWNrZXJJbXBsIHsKK3B1YmxpYzoKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
SW1wbFdpdGhNZXRyaWNzKGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0SW5TY3JlZW4sIENDT3Zl
cmRyYXdNZXRyaWNzOjpGcmFtZUNvdW50ZXImIGNvdW50ZXIpCisgICAgICAgIDogVGVzdENDT2Nj
bHVzaW9uVHJhY2tlckltcGwoc2Npc3NvclJlY3RJblNjcmVlbikKKyAgICB7CisgICAgICAgIC8v
IFJlcGxhY2UgdGhlIENDT3ZlcmRyYXdNZXRyaWNzIHdpdGggb25lIHRoYXQgd2lsbCBjb3VudCBh
cyB0aGUgdGVzdCBkZXNpcmVzLgorICAgICAgICBtX292ZXJkcmF3TWV0cmljcyA9IENDT3ZlcmRy
YXdNZXRyaWNzOjpjcmVhdGUoY291bnRlcik7CisgICAgfQorfTsKKwogc3RhdGljIFBhc3NPd25Q
dHI8Q0NUaWxlZExheWVySW1wbD4gbWFrZUxheWVyKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGZsb2F0IG9wYWNpdHks
IGJvb2wgb3BhcXVlLCBjb25zdCBJbnRSZWN0JiBsYXllck9wYXF1ZVJlY3QpCiB7CiAgICAgT3du
UHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gQ0NUaWxlZExheWVySW1wbDo6Y3JlYXRlKDAp
OwpAQCAtNzgsMTcgKzkzLDE5IEBAIHN0YXRpYyBQYXNzT3duUHRyPENDVGlsZWRMYXllckltcGw+
IG1ha2VMYXllcihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyCiAgICAgcmV0dXJu
IGxheWVyLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkTGlz
dCYgcXVhZExpc3QsIENDVGlsZWRMYXllckltcGwqIGxheWVyLCBDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsJiBvY2NsdXNpb25UcmFja2VyKQorc3RhdGljIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkTGlz
dCYgcXVhZExpc3QsIENDVGlsZWRMYXllckltcGwqIGxheWVyLCBDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsJiBvY2NsdXNpb25UcmFja2VyLCBWZWN0b3I8T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiA+
JiBzaGFyZWRTdGF0ZUxpc3QpCiB7CiAgICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIocXVhZExp
c3QsIGxheWVyLCAmb2NjbHVzaW9uVHJhY2tlcik7CiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCk7CiAg
ICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7
CisgICAgc2hhcmVkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsK
IH0KIAogI2RlZmluZSBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMgICAgICAgICAg
ICAgICBcCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7ICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICBDQ1F1YWRMaXN0IHF1YWRMaXN0OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOyAgICAg
ICAgICAgICAgICBcCisgICAgVmVjdG9yPE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gPiBzaGFy
ZWRTdGF0ZUxpc3Q7IFwKICAgICBJbnRTaXplIHJvb3RTaXplID0gSW50U2l6ZSgzMDAsIDMwMCk7
ICAgICAgICAgICAgICAgXAogICAgIEludFJlY3Qgcm9vdFJlY3QgPSBJbnRSZWN0KEludFBvaW50
KCksIHJvb3RTaXplKTsgICBcCiAgICAgSW50U2l6ZSBjaGlsZFNpemUgPSBJbnRTaXplKDIwMCwg
MjAwKTsgICAgICAgICAgICAgIFwKQEAgLTEwMiw4ICsxMTksOCBAQCBURVNUKENDUXVhZEN1bGxl
clRlc3QsIHZlcmlmeU5vQ3VsbGluZykKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hp
bGRMYXllciA9IG1ha2VMYXllcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEu
MCwgdHJ1ZSwgSW50UmVjdCgpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2Ns
dXNpb25UcmFja2VyKEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgYXBw
ZW5kUXVhZHMocXVhZExpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOwot
ICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNr
ZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNp
b25UcmFja2VyLCBzaGFyZWRTdGF0ZUxpc3QpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBy
b290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7CiAgICAg
RVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNp
b25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDEzMDAwMCwg
MSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5w
aXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDAsIDEpOwpAQCAtMTE4LDkgKzEzNSw5IEBAIFRFU1Qo
Q0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENoaWxkTGluZXNVcFRvcExlZnQpCiAgICAgT3du
UHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIoVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7CiAgICAgVGVzdEND
T2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KC0xMDAsIC0xMDAs
IDEwMDAsIDEwMDApKTsKIAotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBjaGlsZExheWVyLmdl
dCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hpbGRM
YXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAgICBvY2Ns
dXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwot
ICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNr
ZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lv
blRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUo
KSwgOXUpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNz
KCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgOTAwMDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1
c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCAw
LCAxKTsKQEAgLTEzNSw5ICsxNTIsOSBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1
bGxXaGVuQ2hpbGRPcGFjaXR5Tm90T25lKQogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBj
aGlsZExheWVyID0gbWFrZUxheWVyKGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDAuOSwgdHJ1
ZSwgSW50UmVjdCgpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25U
cmFja2VyKEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgYXBwZW5kUXVh
ZHMocXVhZExpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFw
cGVuZFF1YWRzKHF1YWRMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBz
aGFyZWRTdGF0ZUxpc3QpOwogICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIoY2hpbGRMYXllci5nZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RM
YXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3Qs
IHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAg
ICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1
c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgOTAwMDAs
IDEpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCku
cGl4ZWxzRHJhd25UcmFuc2x1Y2VudCgpLCA0MDAwMCwgMSk7CkBAIC0xNTIsOSArMTY5LDkgQEAg
VEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsV2hlbkNoaWxkT3BhcXVlRmxhZ0ZhbHNl
KQogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKGNo
aWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgZmFsc2UsIEludFJlY3QoKSk7CiAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KC0xMDAsIC0x
MDAsIDEwMDAsIDEwMDApKTsKIAotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBjaGlsZExheWVy
LmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hp
bGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAgICBv
Y2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkp
OwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRy
YWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1
c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNp
emUoKSwgMTN1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0
cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDkwMDAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihv
Y2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQo
KSwgNDAwMDAsIDEpOwpAQCAtMTcxLDkgKzE4OCw5IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwg
dmVyaWZ5Q3VsbENlbnRlclRpbGVPbmx5KQogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBj
aGlsZExheWVyID0gbWFrZUxheWVyKGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgdHJ1
ZSwgSW50UmVjdCgpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25U
cmFja2VyKEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgYXBwZW5kUXVh
ZHMocXVhZExpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFw
cGVuZFF1YWRzKHF1YWRMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBz
aGFyZWRTdGF0ZUxpc3QpOwogICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIoY2hpbGRMYXllci5nZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RM
YXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3Qs
IHJvb3RMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAg
ICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOwogCiAgICAgSW50UmVjdCBxdWFkVmlz
aWJsZVJlY3QxID0gcXVhZExpc3RbNV0uZ2V0KCktPnF1YWRWaXNpYmxlUmVjdCgpOwpAQCAtMjE0
LDkgKzIzMSw5IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENlbnRlclRpbGVO
b25JbnRlZ3JhbFNpemUxKQogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVy
ID0gbWFrZUxheWVyKGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVj
dCgpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKElu
dFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExp
c3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRz
KHF1YWRMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBzaGFyZWRTdGF0
ZUxpc3QpOwogICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hp
bGRMYXllci5nZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RMYXllci5nZXQo
KSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RMYXll
ci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAgICBFWFBFQ1Rf
RVEocXVhZExpc3Quc2l6ZSgpLCAydSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFj
a2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDIwMzYzLCAxKTsKQEAg
LTI0Miw5ICsyNTksOSBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDZW50ZXJU
aWxlTm9uSW50ZWdyYWxTaXplMikKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRM
YXllciA9IG1ha2VMYXllcihjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIElu
dFJlY3QoKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tl
cihJbnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAsIDEwMDApKTsKIAotICAgIGFwcGVuZFF1YWRzKHF1
YWRMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRR
dWFkcyhxdWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVk
U3RhdGVMaXN0KTsKICAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCByb290TGF5ZXIu
Z2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCByb290
TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7CiAgICAgRVhQ
RUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMnUpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9u
VHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAxOTY0MywgMSk7
CkBAIC0yNjIsOSArMjc5LDkgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2hp
bGRMaW5lc1VwQm90dG9tUmlnaHQpCiAgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxk
TGF5ZXIgPSBtYWtlTGF5ZXIoY2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJ
bnRSZWN0KCkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNr
ZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICBhcHBlbmRRdWFkcyhx
dWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5k
UXVhZHMocXVhZExpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJl
ZFN0YXRlTGlzdCk7CiAgICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVy
LmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9v
dExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBzaGFyZWRTdGF0ZUxpc3QpOwogICAgIEVY
UEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDl1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25U
cmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDkwMDAwLCAxKTsK
ICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVs
c0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7CkBAIC0yODIsOSArMjk5LDkgQEAgVEVTVChDQ1F1
YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uKQogICAgIE93blB0cjxDQ1RpbGVkTGF5
ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3Qs
IDEuMCwgZmFsc2UsIGNoaWxkT3BhcXVlUmVjdCk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tl
ckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAsIDEwMDApKTsK
IAotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25U
cmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2Nj
bHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAgICBvY2NsdXNpb25UcmFja2VyLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRz
KHF1YWRMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVu
ZFF1YWRzKHF1YWRMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJl
ZFN0YXRlTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTJ1KTsKICAgICBF
WFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXdu
T3BhcXVlKCksIDkwMDAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92
ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMzAwMDAsIDEpOwpAQCAt
MzAyLDkgKzMxOSw5IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lv
bjIpCiAgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIo
Y2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwgMS4wLCBmYWxzZSwgY2hpbGRPcGFxdWVSZWN0KTsK
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3Qo
LTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIGNo
aWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRM
aXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBzaGFyZWRTdGF0ZUxpc3Qp
OwogICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGRMYXll
ci5nZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RMYXllci5nZXQoKSwgb2Nj
bHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RMYXllci5nZXQo
KSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAgICBFWFBFQ1RfRVEocXVh
ZExpc3Quc2l6ZSgpLCAxMnUpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3Zl
cmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgOTAwMDAsIDEpOwogICAgIEVYUEVD
VF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25UcmFu
c2x1Y2VudCgpLCAyNTAwMCwgMSk7CkBAIC0zMjIsOSArMzM5LDkgQEAgVEVTVChDQ1F1YWRDdWxs
ZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uQ2hlY2tPdmVyY3VsbCkKICAgICBPd25QdHI8Q0NU
aWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihjaGlsZFRyYW5zZm9ybSwgY2hp
bGRSZWN0LCAxLjAsIGZhbHNlLCBjaGlsZE9wYXF1ZVJlY3QpOwogICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAx
MDAwKSk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2Nj
bHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIGNoaWxkTGF5ZXIuZ2V0
KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7CiAgICAgb2NjbHVzaW9uVHJh
Y2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBl
bmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAg
ICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2Vy
LCBzaGFyZWRTdGF0ZUxpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7
CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhl
bHNEcmF3bk9wYXF1ZSgpLCA5MDAwMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJh
Y2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDMwMDAwLCAx
KTsKQEAgLTM0Miw5ICszNTksOSBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeU5vbkF4
aXNBbGlnbmVkUXVhZHNEb250T2NjbHVkZSkKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4g
Y2hpbGRMYXllciA9IG1ha2VMYXllcihjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIHRy
dWUsIEludFJlY3QoKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9u
VHJhY2tlcihJbnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAsIDEwMDApKTsKIAotICAgIGFwcGVuZFF1
YWRzKHF1YWRMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBh
cHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlciwg
c2hhcmVkU3RhdGVMaXN0KTsKICAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGlu
ZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0LCByb290
TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0
LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7CiAg
ICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKICAgICBFWFBFQ1RfTkVBUihvY2Ns
dXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDEzMDAw
MCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3Mo
KS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDAsIDEpOwpAQCAtMzY4LDkgKzM4NSw5IEBAIFRF
U1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Tm9uQXhpc0FsaWduZWRRdWFkc1NhZmVseUN1bGxl
ZCkKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsK
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3Qo
LTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIGNo
aWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRzKHF1YWRM
aXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBzaGFyZWRTdGF0ZUxpc3Qp
OwogICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGRMYXll
ci5nZXQoKSk7Ci0gICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RMYXllci5nZXQoKSwgb2Nj
bHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RMYXllci5nZXQo
KSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAgICBFWFBFQ1RfRVEocXVh
ZExpc3Quc2l6ZSgpLCAxMnUpOwogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3Zl
cmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgMTAwNjAwLCAxKTsKICAgICBFWFBF
Q1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJh
bnNsdWNlbnQoKSwgMCwgMSk7CkBAIC0zODUsOSArNDAyLDkgQEAgVEVTVChDQ1F1YWRDdWxsZXJU
ZXN0LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNzb3JPdmVyVGlsZSkKICAgICBPd25QdHI8Q0NUaWxl
ZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7
CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9u
VHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9j
Y2x1c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7CiAgICAgb2NjbHVzaW9uVHJhY2tlci5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRRdWFk
cyhxdWFkTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBl
bmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBzaGFy
ZWRTdGF0ZUxpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDF1KTsKICAgICBF
WFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXdu
T3BhcXVlKCksIDEwMDAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92
ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7CkBAIC00MDIs
OSArNDE5LDkgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNz
b3JPdmVyQ3VsbGVkVGlsZSkKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXll
ciA9IG1ha2VMYXllcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEuMCwgdHJ1
ZSwgSW50UmVjdCgpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25U
cmFja2VyKEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7CiAKLSAgICBhcHBlbmRRdWFkcyhx
dWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5k
UXVhZHMocXVhZExpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJl
ZFN0YXRlTGlzdCk7CiAgICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihjaGlsZExheWVyLmdldCgpKTsKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVy
LmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9v
dExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBzaGFyZWRTdGF0ZUxpc3QpOwogICAgIEVY
UEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDF1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25U
cmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDEwMDAwLCAxKTsK
ICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVs
c0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7CkBAIC00MTksOSArNDM2LDkgQEAgVEVTVChDQ1F1
YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNzb3JPdmVyUGFydGlhbFRpbGVzKQog
ICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwogICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCg1MCwg
NTAsIDIwMCwgMjAwKSk7CiAKLSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hpbGRMYXllci5n
ZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIGNoaWxk
TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7CiAgICAgb2Nj
bHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsK
LSAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFj
a2VyKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNp
b25UcmFja2VyLCBzaGFyZWRTdGF0ZUxpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXpl
KCksIDl1KTsKICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmlj
cygpLnBpeGVsc0RyYXduT3BhcXVlKCksIDQwMDAwLCAxKTsKICAgICBFWFBFQ1RfTkVBUihvY2Ns
dXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwg
MCwgMSk7CkBAIC00MzYsMTMgKzQ1Myw1OCBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlm
eUN1bGxPdXRzaWRlU2Npc3Nvck92ZXJOb1RpbGVzKQogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJ
bXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxk
UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCkpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCg1MDAsIDUwMCwgMTAwLCAxMDApKTsKIAotICAg
IGFwcGVuZFF1YWRzKHF1YWRMaXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2Vy
KTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9u
VHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKICAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2Ns
dWRlZEJlaGluZExheWVyKGNoaWxkTGF5ZXIuZ2V0KCkpOwotICAgIGFwcGVuZFF1YWRzKHF1YWRM
aXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIpOworICAgIGFwcGVuZFF1YWRz
KHF1YWRMaXN0LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRl
TGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMHUpOwogICAgIEVYUEVDVF9O
RUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUo
KSwgMCwgMSk7CiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJp
Y3MoKS5waXhlbHNEcmF3blRyYW5zbHVjZW50KCksIDAsIDEpOwogICAgIEVYUEVDVF9ORUFSKG9j
Y2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzQ3VsbGVkKCksIDEzMDAwMCwg
MSk7CiB9CiAKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5T3ZlcmRyYXdNZXRyaWNzVGhy
b3R0bGluZykKK3sKKyAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKKworICAg
IE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBPd25Q
dHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBDQ092ZXJk
cmF3TWV0cmljczo6RnJhbWVDb3VudGVyIGZyYW1lQ291bnRlcigwLjIpOworCisgICAgeworICAg
ICAgICAvLyBBbHdheXMgY291bnRzIHRoZSBmaXJzdCBmcmFtZS4KKyAgICAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlckltcGxXaXRoTWV0cmljcyBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoNTAs
IDUwLCAyMDAsIDIwMCksIGZyYW1lQ291bnRlcik7CisgICAgICAgIGFwcGVuZFF1YWRzKHF1YWRM
aXN0LCBjaGlsZExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyLCBzaGFyZWRTdGF0ZUxpc3Qp
OworICAgICAgICBvY2NsdXNpb25UcmFja2VyLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxk
TGF5ZXIuZ2V0KCkpOworICAgICAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVyLmdl
dCgpLCBvY2NsdXNpb25UcmFja2VyLCBzaGFyZWRTdGF0ZUxpc3QpOworICAgICAgICBFWFBFQ1Rf
RVEocXVhZExpc3Quc2l6ZSgpLCA5dSk7CisgICAgICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRy
YWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFxdWUoKSwgNDAwMDAsIDEpOwor
ICAgICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBp
eGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7CisgICAgICAgIEVYUEVDVF9ORUFSKG9jY2x1
c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzQ3VsbGVkKCksIDkwMDAwLCAxKTsK
KyAgICB9CisKKyAgICAvLyBTaG91bGQgbm90IGNvdW50IHRoZSBuZXh0IGZvdXIgZnJhbWVzLgor
ICAgIGZvciAoaW50IGkgPSAyOyBpIDwgNjsgKytpKSB7CisgICAgICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJJbXBsV2l0aE1ldHJpY3Mgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KDUwLCA1MCwg
MjAwLCAyMDApLCBmcmFtZUNvdW50ZXIpOworICAgICAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwg
Y2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKKyAg
ICAgICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVy
LmdldCgpKTsKKyAgICAgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHJvb3RMYXllci5nZXQoKSwg
b2NjbHVzaW9uVHJhY2tlciwgc2hhcmVkU3RhdGVMaXN0KTsKKyAgICAgICAgRVhQRUNUX0VRKHF1
YWRMaXN0LnNpemUoKSwgaSAqIDl1KTsKKyAgICAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJh
Y2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAwLCAxKTsKKyAgICAg
ICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNE
cmF3blRyYW5zbHVjZW50KCksIDAsIDEpOworICAgICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25U
cmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0N1bGxlZCgpLCAwLCAxKTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIC8vIFRoZSBzaXh0aCBmcmFtZSBpcyBjb3VudGVkIGFnYWluLgorICAg
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbFdpdGhNZXRyaWNzIG9jY2x1c2lvblRyYWNr
ZXIoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSwgZnJhbWVDb3VudGVyKTsKKyAgICAgICAgYXBw
ZW5kUXVhZHMocXVhZExpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNo
YXJlZFN0YXRlTGlzdCk7CisgICAgICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIoY2hpbGRMYXllci5nZXQoKSk7CisgICAgICAgIGFwcGVuZFF1YWRzKHF1YWRMaXN0
LCByb290TGF5ZXIuZ2V0KCksIG9jY2x1c2lvblRyYWNrZXIsIHNoYXJlZFN0YXRlTGlzdCk7Cisg
ICAgICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDYgKiA5dSk7CisgICAgICAgIEVYUEVD
VF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzRHJhd25PcGFx
dWUoKSwgNDAwMDAsIDEpOworICAgICAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92
ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7CisgICAgICAg
IEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzQ3Vs
bGVkKCksIDkwMDAwLCAxKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNw
cAppbmRleCA3ZWViYjk3MTQ2ODZhZWUxMTNiZTAyZmFhZTg1NmU1MjBhNjVjMThiLi5mNTUzMjI1
OWVkNTExYTc1Yjg2ZjY0Njg3Yjg1ODJiOTUxMjA5YWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTUy
LDggKzUyLDEyIEBAIGNsYXNzIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgOiBwdWJsaWMgQ0NPY2Ns
dXNpb25UcmFja2VyIHsKIHB1YmxpYzoKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyKCkKICAg
ICAgICAgOiBDQ09jY2x1c2lvblRyYWNrZXIoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSkKKyAg
ICAgICAgLCBtX2ZyYW1lQ291bnRlcigxLjApCiAgICAgICAgICwgbV9zY2lzc29yUmVjdEluU2Ny
ZWVuKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpCiAgICAgeworICAgICAgICAvLyBSZXBsYWNl
IHRoZSBDQ092ZXJkcmF3TWV0cmljcyB3aXRoIG9uZSB0aGF0IHdpbGwgY291bnQgZXZlcnkgZnJh
bWUgKGFuZCBldmVyeSB0ZXN0KQorICAgICAgICBtX292ZXJkcmF3TWV0cmljcyA9IENDT3ZlcmRy
YXdNZXRyaWNzOjpjcmVhdGUobV9mcmFtZUNvdW50ZXIpOworCiAgICAgICAgIC8vIFByZXRlbmQg
d2UgaGF2ZSB2aXNpdGVkIGEgcmVuZGVyIHN1cmZhY2UuCiAgICAgICAgIG1fc3RhY2suYXBwZW5k
KFN0YWNrT2JqZWN0KCkpOwogICAgIH0KQEAgLTY0LDYgKzY4LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgSW50UmVjdCBsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGNvbnN0IExh
eWVyQ2hyb21pdW0qIGxheWVyKSBjb25zdCB7IHJldHVybiBtX3NjaXNzb3JSZWN0SW5TY3JlZW47
IH0KIAogcHJpdmF0ZToKKyAgICBDQ092ZXJkcmF3TWV0cmljczo6RnJhbWVDb3VudGVyIG1fZnJh
bWVDb3VudGVyOwogICAgIEludFJlY3QgbV9zY2lzc29yUmVjdEluU2NyZWVuOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132436</attachid>
            <date>2012-03-16 19:18:02 -0700</date>
            <delta_ts>2012-03-20 11:16:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81431-20120316221758.patch</filename>
            <type>text/plain</type>
            <size>16569</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRlZGNkMzc3OTAwNjc0
YmNkNzEyNzAxNTA4MmFlMjNkMDc1OTk1MC4uMTA3NzYxYjRlMmQxNWIyNTUxZTI4Y2E4MmY5ZDBi
ZmE4MzQ3YmMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTAzLTE2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVGhy
b3R0bGUgb3ZlcmRyYXcgbWV0cmljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODE0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhbGxvd3MgdXMgdG8gcmVjb3JkIG92ZXJkcmF3IG1l
dHJpY3Mgb24gYSBzYW1wbGUgb2YgZnJhbWVzLAorICAgICAgICByYXRoZXIgdGhhbiBvbiBldmVy
eSBmcmFtZS4KKworICAgICAgICBVbml0IHRlc3Q6IENDUXVhZEN1bGxlclRlc3QudmVyaWZ5V2l0
aG91dE1ldHJpY3MKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBh
aW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjo6OkNDT2NjbHVzaW9uVHJhY2tlckJhc2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmg6
CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJCYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ092ZXJkcmF3TWV0cmljczo6Q0NPdmVyZHJhd01ldHJpY3MpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NPdmVyZHJhd01ldHJpY3M6OmRpZEN1bGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NP
dmVyZHJhd01ldHJpY3M6OmRpZERyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPdmVyZHJhd01l
dHJpY3M6OnJlY29yZE1ldHJpY3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ092ZXJkcmF3
TWV0cmljczo6Y3JlYXRlKToKKyAgICAgICAgKENDT3ZlcmRyYXdNZXRyaWNzKToKKwogMjAxMi0w
My0xNiAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IHJv
dW5kaW5nIGFuZCB1c2FnZSBvZiBMYXlvdXRVbml0cyBpbiBSZW5kZXJCb3hNb2RlbE9iamVjdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1NjA2ZmIwOWE5ZjQ5OTY4NzdjNWFmZTZlMWUx
ZGNjNjU5Y2YzZDc3Li4wNjNjZDA1OWZkMzdlYjc5YWU4NDg2ZWZlOGU2Nzg1NmY3Yjg3ZjkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAzLTE2ICBE
YW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
VGhyb3R0bGUgb3ZlcmRyYXcgbWV0cmljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODE0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U6OlRlc3RDQ09jY2x1c2lv
blRyYWNrZXJCYXNlKToKKyAgICAgICAgKiB0ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsOjpUZXN0Q0NPY2NsdXNp
b25UcmFja2VySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgorICAgICAg
ICAoV1RGOjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyOjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyKToK
KwogMjAxMi0wMy0xNSAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIFJlZmFjdG9yIENsaXBib2FyZENocm9taXVtIGFuZCBEYXRhVHJhbnNm
ZXJJdGVtTGlzdC9EYXRhVHJhbnNmZXJJdGVtIHRvIHN1cHBvcnQgSFRNTCBzcGVjCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCAwMTc4MjBhN2M3MGUxYjkzZmM2MmE0ZGY0NzY2
NDUyODY5NzAzNWExLi44NzgwNjg1YjkxYzI2MjE0Yzg1MWM3OTRhNWI3YjA1YzRmNGJlODJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTUzOCw3ICs1MzgsOCBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdAogICAgIC8vIFVzZSBGcm9udFRvQmFjayB0byBhbGxvdyBmb3Ig
dGVzdGluZyBvY2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3VsbGluZyBkdXJpbmcgdGhlIHRyZWUg
d2Fsay4KICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxMYXllckNocm9taXVtLCBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgQ0NMYXllckl0
ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKLSAgICBD
Q09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KEludFBvaW50KCksIHZp
ZXdwb3J0U2l6ZSgpKSk7CisgICAgYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUgPSAhKGZyYW1l
TnVtYmVyKCkgJSAxMCk7IC8vIFJlY29yZCAxIGZyYW1lIGluIDEwLgorICAgIENDT2NjbHVzaW9u
VHJhY2tlciBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoSW50UG9pbnQoKSwgdmlld3BvcnRTaXpl
KCkpLCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpOwogICAgIG9jY2x1c2lvblRyYWNrZXIuc2V0VXNl
UGFpbnRUcmFja2luZyhmYWxzZSk7IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB0byB0dXJuIG9uIHBh
aW50IHRyYWNraW5nIGZvciBwYWludCBjdWxsaW5nCiAKICAgICBDQ0xheWVySXRlcmF0b3JUeXBl
IGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGViZTA2ZjUxMGU5
NmQ1ZDA3ZDdkNzBmN2U2M2M1OTM2NDVhNjRkNDQuLjk0MWFmMWIwZjA0OWNiMWExM2FlMmUyYjE5
NDUxOTgxYmRkZTc4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
CkBAIC0yNzUsNyArMjc1LDkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVS
ZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzLCBDQ0xheWUKICAgICAgICAgc2Np
c3NvclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1fcm9vdERhbWFnZVJlY3QpOwogICAgIGVsc2UK
ICAgICAgICAgc2Npc3NvclJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6ZSgp
KTsKLSAgICBDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoc2Npc3NvclJl
Y3QpOworCisgICAgYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUgPSAhKGZyYW1lTnVtYmVyKCkg
JSAxMCk7IC8vIFJlY29yZCAxIGZyYW1lIGluIDEwLgorICAgIENDT2NjbHVzaW9uVHJhY2tlcklt
cGwgb2NjbHVzaW9uVHJhY2tlcihzY2lzc29yUmVjdCwgcmVjb3JkTWV0cmljc0ZvckZyYW1lKTsK
IAogICAgIC8vIEFkZCBxdWFkcyB0byB0aGUgUmVuZGVyIHBhc3NlcyBpbiBGcm9udFRvQmFjayBv
cmRlciB0byBhbGxvdyBmb3IgdGVzdGluZyBvY2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3VsbGlu
ZyBkdXJpbmcgdGhlIHRyZWUgd2Fsay4KICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxDQ0xh
eWVySW1wbCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFjZSwgQ0NMYXllckl0
ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1
c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAppbmRleCBjNjlhNGQ5YzgxZDIxNDhhZTBhYzdk
Nzg5OTA2MTJhOGZlYmY5NWIyLi5kNDU1YzNjMGE2ZjQ2MDhiOWU3OTNlMDMzYzU0YjdlNTA4ZGVh
OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKQEAgLTM5LDkgKzM5
LDkgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLUNDT2Nj
bHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OkNDT2NjbHVz
aW9uVHJhY2tlckJhc2UoSW50UmVjdCBzY2lzc29yUmVjdEluU2NyZWVuU3BhY2UpCitDQ09jY2x1
c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpDQ09jY2x1c2lv
blRyYWNrZXJCYXNlKEludFJlY3Qgc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBib29sIHJlY29y
ZE1ldHJpY3NGb3JGcmFtZSkKICAgICA6IG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlKHNjaXNz
b3JSZWN0SW5TY3JlZW5TcGFjZSkKLSAgICAsIG1fb3ZlcmRyYXdNZXRyaWNzKENDT3ZlcmRyYXdN
ZXRyaWNzOjpjcmVhdGUoKSkKKyAgICAsIG1fb3ZlcmRyYXdNZXRyaWNzKENDT3ZlcmRyYXdNZXRy
aWNzOjpjcmVhdGUocmVjb3JkTWV0cmljc0ZvckZyYW1lKSkKICAgICAsIG1fdXNlUGFpbnRUcmFj
a2luZyh0cnVlKSAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBwYWludCB0cmFja2luZyBpcyBv
biBmb3IgcGFpbnQgY3VsbGluZy4KIHsKIH0KQEAgLTM0NSw3ICszNDUsNyBAQCBjb25zdCBSZWdp
b24mIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46
OmN1cnJlbnRPY2NsdQogCiAKIC8vIERlY2xhcmUgdGhlIHBvc3NpYmxlIGZ1bmN0aW9ucyBoZXJl
IGZvciB0aGUgbGlua2VyLgotdGVtcGxhdGUgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNo
cm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlKElu
dFJlY3Qgc2Npc3NvclJlY3RJblNjcmVlblNwYWNlKTsKK3RlbXBsYXRlIENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6Q0NPY2NsdXNp
b25UcmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgYm9vbCByZWNv
cmRNZXRyaWNzRm9yRnJhbWUpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNl
PExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIG5ld1RhcmdldCk7CiB0ZW1wbGF0
ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFj
ZUNocm9taXVtPjo6ZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNvbnN0IExheWVyQ2hyb21p
dW0qIG93bmluZ0xheWVyLCBjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIGZpbmlzaGVkVGFy
Z2V0KTsKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVt
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpsZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShjb25z
dCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIG5ld1RhcmdldCk7CkBAIC0zNTYsNyArMzU2LDcgQEAg
dGVtcGxhdGUgY29uc3QgUmVnaW9uJiBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21p
dW0sIFJlbmRlclN1cmZhY2VDaHJvbWkKIHRlbXBsYXRlIGNvbnN0IFJlZ2lvbiYgQ0NPY2NsdXNp
b25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpjdXJy
ZW50T2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkgY29uc3Q7CiB0ZW1wbGF0ZSBJbnRSZWN0IEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVt
Pjo6bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShjb25zdCBMYXllckNocm9taXVtKikg
Y29uc3Q7CiAKLXRlbXBsYXRlIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIEND
UmVuZGVyU3VyZmFjZT46OkNDT2NjbHVzaW9uVHJhY2tlckJhc2UoSW50UmVjdCBzY2lzc29yUmVj
dEluU2NyZWVuU3BhY2UpOwordGVtcGxhdGUgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVy
SW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6Q0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNj
aXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpOwogdGVt
cGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1
cmZhY2U+OjplbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgQ0NSZW5kZXJTdXJmYWNlKiBu
ZXdUYXJnZXQpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJ
bXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpmaW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY29uc3Qg
Q0NMYXllckltcGwqIG93bmluZ0xheWVyLCBjb25zdCBDQ1JlbmRlclN1cmZhY2UqIGZpbmlzaGVk
VGFyZ2V0KTsKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1w
bCwgQ0NSZW5kZXJTdXJmYWNlPjo6bGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgQ0NS
ZW5kZXJTdXJmYWNlKiBuZXdUYXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIu
aAppbmRleCAyODJkZWZmZGYyNTY0YmUzZjkwMTNkMmU5MjAyNmU5YjhkNmUyYWZkLi41MzBlNmYz
ZGYxZDAwMjAyNzMzNDMzNTU1ZDAxYWIzZDkyNTc4NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1
c2lvblRyYWNrZXIuaApAQCAtNDYsNyArNDYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5
cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgogY2xhc3MgQ0NPY2NsdXNpb25UcmFja2Vy
QmFzZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NPY2NsdXNpb25UcmFja2VyQmFzZSk7
CiBwdWJsaWM6Ci0gICAgQ0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0
SW5TY3JlZW5TcGFjZSk7CisgICAgQ0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjaXNz
b3JSZWN0SW5TY3JlZW5TcGFjZSwgYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpOwogCiAgICAg
Ly8gQ2FsbGVkIHdoZW4gdmlzaXRpbmcgYSBsYXllciByZXByZXNlbnRpbmcgaXRzZWxmLiBJZiB0
aGUgdGFyZ2V0IHdhcyBub3QgYWxyZWFkeSBjdXJyZW50LCB0aGVuIHRoaXMgaW5kaWNhdGVzIHdl
IGhhdmUgZW50ZXJlZCBhIG5ldyBzdXJmYWNlIHN1YnRyZWUuCiAgICAgdm9pZCBlbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UoY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIG5ld1RhcmdldCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092
ZXJkcmF3TWV0cmljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5jcHAKaW5kZXggYTc3ZGM2OWYwNjFiNTA4M2I4OGM4
YjU4ZjI5MDhjM2M0OTUwNjRjNC4uODg1YzNiMDM0ZmRjYTFhNDk5MGJmOWIxYWQyMDQ5MDk3OWI3
NDZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmNwcApAQCAtMzcsOCArMzcs
OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNDT3ZlcmRyYXdNZXRyaWNzOjpDQ092ZXJk
cmF3TWV0cmljcygpCi0gICAgOiBtX3BpeGVsc0RyYXduT3BhcXVlKDApCitDQ092ZXJkcmF3TWV0
cmljczo6Q0NPdmVyZHJhd01ldHJpY3MoYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpCisgICAg
OiBtX3JlY29yZE1ldHJpY3NGb3JGcmFtZShyZWNvcmRNZXRyaWNzRm9yRnJhbWUpCisgICAgLCBt
X3BpeGVsc0RyYXduT3BhcXVlKDApCiAgICAgLCBtX3BpeGVsc0RyYXduVHJhbnNsdWNlbnQoMCkK
ICAgICAsIG1fcGl4ZWxzQ3VsbGVkKDApCiB7CkBAIC02MCw2ICs2MSw5IEBAIHN0YXRpYyBpbmxp
bmUgZmxvYXQgcXVhZEFyZWEoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQogCiB2b2lkIENDT3ZlcmRy
YXdNZXRyaWNzOjpkaWRDdWxsKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1U
b1RhcmdldCwgY29uc3QgSW50UmVjdCYgYmVmb3JlQ3VsbFJlY3QsIGNvbnN0IEludFJlY3QmIGFm
dGVyQ3VsbFJlY3QpCiB7CisgICAgaWYgKCFtX3JlY29yZE1ldHJpY3NGb3JGcmFtZSkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgZmxvYXQgYmVmb3JlQ3VsbEFyZWEgPSBxdWFkQXJlYSh0cmFuc2Zv
cm1Ub1RhcmdldC5tYXBRdWFkKEZsb2F0UXVhZChiZWZvcmVDdWxsUmVjdCkpKTsKICAgICBmbG9h
dCBhZnRlckN1bGxBcmVhID0gcXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9h
dFF1YWQoYWZ0ZXJDdWxsUmVjdCkpKTsKIApAQCAtNjgsNiArNzIsOSBAQCB2b2lkIENDT3ZlcmRy
YXdNZXRyaWNzOjpkaWRDdWxsKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1U
b1RhcmdldCwgYwogCiB2b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpkaWREcmF3KGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1RhcmdldCwgY29uc3QgSW50UmVjdCYgYWZ0ZXJD
dWxsUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCkKIHsKKyAgICBpZiAoIW1fcmVjb3Jk
TWV0cmljc0ZvckZyYW1lKQorICAgICAgICByZXR1cm47CisKICAgICBmbG9hdCBhZnRlckN1bGxB
cmVhID0gcXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1YWQoYWZ0ZXJD
dWxsUmVjdCkpKTsKICAgICBmbG9hdCBhZnRlckN1bGxPcGFxdWVBcmVhID0gcXVhZEFyZWEodHJh
bnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1YWQoaW50ZXJzZWN0aW9uKG9wYXF1ZVJlY3Qs
IGFmdGVyQ3VsbFJlY3QpKSkpOwogCkBAIC03NywxMiArODQsMTQgQEAgdm9pZCBDQ092ZXJkcmF3
TWV0cmljczo6ZGlkRHJhdyhjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9U
YXJnZXQsIGMKIAogdm9pZCBDQ092ZXJkcmF3TWV0cmljczo6cmVjb3JkTWV0cmljcyhjb25zdCBD
Q0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpIGNvbnN0CiB7Ci0gICAgcmVjb3JkTWV0cmlj
c0ludGVybmFsPENDTGF5ZXJUcmVlSG9zdD4oVVBMT0FESU5HLCBsYXllclRyZWVIb3N0KTsKKyAg
ICBpZiAobV9yZWNvcmRNZXRyaWNzRm9yRnJhbWUpCisgICAgICAgIHJlY29yZE1ldHJpY3NJbnRl
cm5hbDxDQ0xheWVyVHJlZUhvc3Q+KFVQTE9BRElORywgbGF5ZXJUcmVlSG9zdCk7CiB9CiAKIHZv
aWQgQ0NPdmVyZHJhd01ldHJpY3M6OnJlY29yZE1ldHJpY3MoY29uc3QgQ0NMYXllclRyZWVIb3N0
SW1wbCogbGF5ZXJUcmVlSG9zdCkgY29uc3QKIHsKLSAgICByZWNvcmRNZXRyaWNzSW50ZXJuYWw8
Q0NMYXllclRyZWVIb3N0SW1wbD4oRFJBV0lORywgbGF5ZXJUcmVlSG9zdCk7CisgICAgaWYgKG1f
cmVjb3JkTWV0cmljc0ZvckZyYW1lKQorICAgICAgICByZWNvcmRNZXRyaWNzSW50ZXJuYWw8Q0NM
YXllclRyZWVIb3N0SW1wbD4oRFJBV0lORywgbGF5ZXJUcmVlSG9zdCk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIExheWVyVHJlZUhvc3RUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNz
LmgKaW5kZXggNDg5Y2E1NjljNTI1NTM4OWNjZjMwMmE0YzM4Y2Q4N2Y2MjBjYzFmNC4uYmRjMDM4
MDc5YzEyYzZmMGE4ZTdmZDY0YjFlNGZhNTMyYTFmOGZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJk
cmF3TWV0cmljcy5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7
CiAvLyBGSVhNRTogY29tcHV0ZSBvdmVyZHJhdyBtZXRyaWNzIG9ubHkgb2NjYXNpb25hbGx5LCBu
b3QgZXZlcnkgZnJhbWUuCiBjbGFzcyBDQ092ZXJkcmF3TWV0cmljcyB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8Q0NPdmVyZHJhd01ldHJpY3M+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UHRyKG5ldyBDQ092ZXJkcmF3TWV0cmljcygpKTsgfQorICAgIHN0YXRpYyBQYXNzT3duUHRy
PENDT3ZlcmRyYXdNZXRyaWNzPiBjcmVhdGUoYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpIHsg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDQ092ZXJkcmF3TWV0cmljcyhyZWNvcmRNZXRyaWNzRm9yRnJh
bWUpKTsgfQogCiAgICAgdm9pZCBkaWRDdWxsKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm1Ub1RhcmdldCwgY29uc3QgSW50UmVjdCYgYmVmb3JlQ3VsbFJlY3QsIGNvbnN0IElu
dFJlY3QmIGFmdGVyQ3VsbFJlY3QpOwogICAgIHZvaWQgZGlkRHJhdyhjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQsIGNvbnN0IEludFJlY3QmIGFmdGVyQ3VsbFJl
Y3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpOwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6
CiAgICAgZmxvYXQgcGl4ZWxzQ3VsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9waXhlbHNDdWxsZWQ7
IH0KIAogcHJpdmF0ZToKLSAgICBDQ092ZXJkcmF3TWV0cmljcygpOworICAgIENDT3ZlcmRyYXdN
ZXRyaWNzKGJvb2wgcmVjb3JkTWV0cmljc0ZvckZyYW1lKTsKIAogICAgIGVudW0gTWV0cmljc1R5
cGUgewogICAgICAgICBEUkFXSU5HLApAQCAtNjAsNiArNjAsOCBAQCBwcml2YXRlOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIExheWVyVHJlZUhvc3RUeXBlPgogICAgIHZvaWQgcmVjb3JkTWV0cmlj
c0ludGVybmFsKE1ldHJpY3NUeXBlLCBjb25zdCBMYXllclRyZWVIb3N0VHlwZSopIGNvbnN0Owog
CisgICAgLy8gV2hlbiBmYWxzZSB0aGlzIGNsYXNzIGlzIGEgZ2lhbnQgbm8tb3AuCisgICAgYm9v
bCBtX3JlY29yZE1ldHJpY3NGb3JGcmFtZTsKICAgICAvLyBDb3VudCBvZiBwaXhlbHMgdGhhdCBh
cmUgb3BhcXVlIChhbmQgdGh1cyBvY2NsdWRlKS4gSWRlYWxseSB0aGlzIGlzIG5vIG1vcmUKICAg
ICAvLyB0aGFuIHdpZXdwb3J0IHdpZHRoIHggaGVpZ2h0LgogICAgIGZsb2F0IG1fcGl4ZWxzRHJh
d25PcGFxdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2Nj
bHVzaW9uVHJhY2tlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09j
Y2x1c2lvblRyYWNrZXJUZXN0LmNwcAppbmRleCBmMjIwMTUyNDMwYTcxMTliOTlhMTBmNTZhNmFj
ZWE0ZTU4MDQ4ODI4Li4zYTM5YzUwOTI0MGQzODI2OWExYTVhMzYyOWJlYmE2YTk1Njg3OTU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tl
clRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25U
cmFja2VyVGVzdC5jcHAKQEAgLTczLDggKzczLDggQEAgcHJpdmF0ZToKIHRlbXBsYXRlPHR5cGVu
YW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CiBjbGFzcyBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyQmFzZSA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVy
VHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+IHsKIHB1YmxpYzoKLSAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyQmFzZShJbnRSZWN0IHNjcmVlblNjaXNzb3JSZWN0KQotICAgICAgICA6IENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4oc2NyZWVuU2Npc3Nv
clJlY3QpCisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2UoSW50UmVjdCBzY3JlZW5TY2lz
c29yUmVjdCwgYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUgPSBmYWxzZSkKKyAgICAgICAgOiBD
Q09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+KHNjcmVl
blNjaXNzb3JSZWN0LCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpCiAgICAgICAgICwgbV9vdmVycmlk
ZUxheWVyU2Npc3NvclJlY3QoZmFsc2UpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCmluZGV4IDE1OGIwYzA4Yjcw
ZjFjMWY4Njk3ZDcxMjkwYmI5Y2U2ZTZkM2I3YTQuLmRjZTcwNzMwYzRkZmE5ZDdkYTUwYmJiOTIy
YTU4ZTNhYjUzNDNlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NRdWFkQ3VsbGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1F1YWRDdWxsZXJUZXN0LmNwcApAQCAtNDAsOCArNDAsOCBAQCBuYW1lc3BhY2UgewogCiBjbGFz
cyBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsIHsKIHB1YmxpYzoKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbChjb25zdCBJbnRS
ZWN0JiBzY2lzc29yUmVjdEluU2NyZWVuKQotICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlcklt
cGwoc2Npc3NvclJlY3RJblNjcmVlbikKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbChj
b25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdEluU2NyZWVuLCBib29sIHJlY29yZE1ldHJpY3NGb3JG
cmFtZSA9IHRydWUpCisgICAgICAgIDogQ0NPY2NsdXNpb25UcmFja2VySW1wbChzY2lzc29yUmVj
dEluU2NyZWVuLCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpCiAgICAgICAgICwgbV9zY2lzc29yUmVj
dEluU2NyZWVuKHNjaXNzb3JSZWN0SW5TY3JlZW4pCiAgICAgewogICAgICAgICAvLyBQcmV0ZW5k
IHdlIGhhdmUgdmlzaXRlZCBhIHJlbmRlciBzdXJmYWNlLgpAQCAtNDQ1LDQgKzQ0NSwyMiBAQCBU
RVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxPdXRzaWRlU2Npc3Nvck92ZXJOb1RpbGVz
KQogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4
ZWxzQ3VsbGVkKCksIDEzMDAwMCwgMSk7CiB9CiAKK1RFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVy
aWZ5V2l0aG91dE1ldHJpY3MpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FV
QURTCisKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVy
KFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7
CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIoVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSk7Cisg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KDUw
LCA1MCwgMjAwLCAyMDApLCBmYWxzZSk7CisKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hp
bGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgb2NjbHVzaW9uVHJhY2tlci5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVyLmdldCgpKTsKKyAgICBhcHBlbmRRdWFk
cyhxdWFkTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBFWFBF
Q1RfRVEocXVhZExpc3Quc2l6ZSgpLCA5dSk7CisgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJh
Y2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAwLCAxKTsKKyAgICBF
WFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXdu
VHJhbnNsdWNlbnQoKSwgMCwgMSk7CisgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5v
dmVyZHJhd01ldHJpY3MoKS5waXhlbHNDdWxsZWQoKSwgMCwgMSk7Cit9CisKKwogfSAvLyBuYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXll
ckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDdlZWJiOTcxNDY4NmFlZTExM2JlMDJmYWFlODU2ZTUy
MGE2NWMxOGIuLmQ0YTBjN2RmNDE4OWYwMGNlMWY2ZTJhYTgzYzUxZDRlYzk0MTQ1ZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21p
dW1UZXN0LmNwcApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgewogY2xhc3MgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlciA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXIgewogcHVibGljOgogICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXIoKQotICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlcihJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKQorICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlcihJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApLCB0cnVlKQogICAgICAgICAsIG1fc2Npc3NvclJlY3RJ
blNjcmVlbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKQogICAgIHsKICAgICAgICAgLy8gUHJl
dGVuZCB3ZSBoYXZlIHZpc2l0ZWQgYSByZW5kZXIgc3VyZmFjZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132859</attachid>
            <date>2012-03-20 11:16:30 -0700</date>
            <delta_ts>2012-03-20 13:02:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81431-20120320141628.patch</filename>
            <type>text/plain</type>
            <size>16707</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRlZGNkMzc3OTAwNjc0
YmNkNzEyNzAxNTA4MmFlMjNkMDc1OTk1MC4uMjk4ZTQxNjk0MDJlYWQ1MzViZTU5YTM5NTY0ZDIz
N2QzOTJiMGY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTAzLTE2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWxs
b3cgdXMgdG8gZGlzYWJsZSBvdmVyZHJhdyBtZXRyaWNzIHdoZW4gdHJhY2luZyBpcyBvZmYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDMxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
YWxsb3dzIHVzIHRvIGRpc2FibGUgb3ZlcmRyYXcgbWV0cmljcyBjb25kaXRpb25hbGx5IGluIHRo
ZQorICAgICAgICBmdXR1cmUgd2l0aCBhIG9uZS1saW5lIGNoYW5nZSBpbiBlYWNoIExheWVyVHJl
ZUhvc3QgY2xhc3MuCisKKyAgICAgICAgVW5pdCB0ZXN0OiBDQ1F1YWRDdWxsZXJUZXN0LnZlcmlm
eVdpdGhvdXRNZXRyaWNzCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpwYWludExheWVyQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6OjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tl
ci5oOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyQmFzZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NPdmVyZHJhd01ldHJpY3M6OkNDT3ZlcmRyYXdNZXRyaWNzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDT3ZlcmRyYXdNZXRyaWNzOjpkaWRDdWxsKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDT3ZlcmRyYXdNZXRyaWNzOjpkaWREcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDT3ZlcmRy
YXdNZXRyaWNzOjpyZWNvcmRNZXRyaWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NPdmVy
ZHJhd01ldHJpY3M6OmNyZWF0ZSk6CisgICAgICAgIChDQ092ZXJkcmF3TWV0cmljcyk6CisKIDIw
MTItMDMtMTYgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZp
eCByb3VuZGluZyBhbmQgdXNhZ2Ugb2YgTGF5b3V0VW5pdHMgaW4gUmVuZGVyQm94TW9kZWxPYmpl
Y3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTYwNmZiMDlhOWY0OTk2ODc3YzVhZmU2
ZTFlMWRjYzY1OWNmM2Q3Ny4uMTdkYWVjNWEwNmFhZjlhYjU3NmYzZGRkNzliNjczMzhlOTIyOWM2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wMy0x
NiAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFsbG93IHVzIHRvIGRpc2FibGUgb3ZlcmRyYXcgbWV0cmljcyB3aGVuIHRyYWNpbmcgaXMg
b2ZmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQz
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVz
dHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyQmFzZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2UpOgorICAgICAg
ICAqIHRlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEND
T2NjbHVzaW9uVHJhY2tlckltcGw6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdHMv
VGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRlc3RDQ09jY2x1c2lv
blRyYWNrZXI6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXIpOgorCiAyMDEyLTAzLTE1ICBEYW5pZWwg
Q2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVmYWN0
b3IgQ2xpcGJvYXJkQ2hyb21pdW0gYW5kIERhdGFUcmFuc2Zlckl0ZW1MaXN0L0RhdGFUcmFuc2Zl
ckl0ZW0gdG8gc3VwcG9ydCBIVE1MIHNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CmluZGV4IDAxNzgyMGE3YzcwZTFiOTNmYzYyYTRkZjQ3NjY0NTI4Njk3MDM1YTEuLjJjYjAyZTFl
NzdiNjMxNDhiMTMwYjFmMWFlMGI0MDUzZTIwYjFmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcApAQCAtNTM4LDcgKzUzOCw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWlu
dExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAg
ICAgLy8gVXNlIEZyb250VG9CYWNrIHRvIGFsbG93IGZvciB0ZXN0aW5nIG9jY2x1c2lvbiBhbmQg
cGVyZm9ybWluZyBjdWxsaW5nIGR1cmluZyB0aGUgdHJlZSB3YWxrLgogICAgIHR5cGVkZWYgQ0NM
YXllckl0ZXJhdG9yPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRv
QmFjaz4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAotICAgIENDT2NjbHVzaW9uVHJhY2tlciBvY2Ns
dXNpb25UcmFja2VyKEludFJlY3QoSW50UG9pbnQoKSwgdmlld3BvcnRTaXplKCkpKTsKKyAgICBi
b29sIHJlY29yZE1ldHJpY3NGb3JGcmFtZSA9IHRydWU7IC8vIEZJWE1FOiBJbiB0aGUgZnV0dXJl
LCBkaXNhYmxlIHRoaXMgd2hlbiBhYm91dDp0cmFjaW5nIGlzIG9mZi4KKyAgICBDQ09jY2x1c2lv
blRyYWNrZXIgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6
ZSgpKSwgcmVjb3JkTWV0cmljc0ZvckZyYW1lKTsKICAgICBvY2NsdXNpb25UcmFja2VyLnNldFVz
ZVBhaW50VHJhY2tpbmcoZmFsc2UpOyAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdG8gdHVybiBvbiBw
YWludCB0cmFja2luZyBmb3IgcGFpbnQgY3VsbGluZwogCiAgICAgQ0NMYXllckl0ZXJhdG9yVHlw
ZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoJnJlbmRlclN1cmZhY2VMYXllckxpc3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBlYmUwNmY1MTBl
OTZkNWQwN2Q3ZDcwZjdlNjNjNTkzNjQ1YTY0ZDQ0Li40YTEzNTU2NjVhYmY4ZTFiYzY4MTI0MDcz
ZDQ0MDg0YWQ5MDY3MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cApAQCAtMjc1LDcgKzI3NSw5IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRl
UmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcywgQ0NMYXllCiAgICAgICAgIHNj
aXNzb3JSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtX3Jvb3REYW1hZ2VSZWN0KTsKICAgICBlbHNl
CiAgICAgICAgIHNjaXNzb3JSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCB2aWV3cG9ydFNpemUo
KSk7Ci0gICAgQ0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKHNjaXNzb3JS
ZWN0KTsKKworICAgIGJvb2wgcmVjb3JkTWV0cmljc0ZvckZyYW1lID0gdHJ1ZTsgLy8gRklYTUU6
IEluIHRoZSBmdXR1cmUsIGRpc2FibGUgdGhpcyB3aGVuIGFib3V0OnRyYWNpbmcgaXMgb2ZmLgor
ICAgIENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihzY2lzc29yUmVjdCwg
cmVjb3JkTWV0cmljc0ZvckZyYW1lKTsKIAogICAgIC8vIEFkZCBxdWFkcyB0byB0aGUgUmVuZGVy
IHBhc3NlcyBpbiBGcm9udFRvQmFjayBvcmRlciB0byBhbGxvdyBmb3IgdGVzdGluZyBvY2NsdXNp
b24gYW5kIHBlcmZvcm1pbmcgY3VsbGluZyBkdXJpbmcgdGhlIHRyZWUgd2Fsay4KICAgICB0eXBl
ZGVmIENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4sIEND
UmVuZGVyU3VyZmFjZSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5
ZXJJdGVyYXRvclR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAppbmRl
eCBjNjlhNGQ5YzgxZDIxNDhhZTBhYzdkNzg5OTA2MTJhOGZlYmY5NWIyLi5kNDU1YzNjMGE2ZjQ2
MDhiOWU3OTNlMDMzYzU0YjdlNTA4ZGVhOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9u
VHJhY2tlci5jcHAKQEAgLTM5LDkgKzM5LDkgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBS
ZW5kZXJTdXJmYWNlVHlwZT4KLUNDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5k
ZXJTdXJmYWNlVHlwZT46OkNDT2NjbHVzaW9uVHJhY2tlckJhc2UoSW50UmVjdCBzY2lzc29yUmVj
dEluU2NyZWVuU3BhY2UpCitDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVy
U3VyZmFjZVR5cGU+OjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlKEludFJlY3Qgc2Npc3NvclJlY3RJ
blNjcmVlblNwYWNlLCBib29sIHJlY29yZE1ldHJpY3NGb3JGcmFtZSkKICAgICA6IG1fc2Npc3Nv
clJlY3RJblNjcmVlblNwYWNlKHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSkKLSAgICAsIG1fb3Zl
cmRyYXdNZXRyaWNzKENDT3ZlcmRyYXdNZXRyaWNzOjpjcmVhdGUoKSkKKyAgICAsIG1fb3ZlcmRy
YXdNZXRyaWNzKENDT3ZlcmRyYXdNZXRyaWNzOjpjcmVhdGUocmVjb3JkTWV0cmljc0ZvckZyYW1l
KSkKICAgICAsIG1fdXNlUGFpbnRUcmFja2luZyh0cnVlKSAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
d2hlbiBwYWludCB0cmFja2luZyBpcyBvbiBmb3IgcGFpbnQgY3VsbGluZy4KIHsKIH0KQEAgLTM0
NSw3ICszNDUsNyBAQCBjb25zdCBSZWdpb24mIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJU
eXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OmN1cnJlbnRPY2NsdQogCiAKIC8vIERlY2xhcmUgdGhl
IHBvc3NpYmxlIGZ1bmN0aW9ucyBoZXJlIGZvciB0aGUgbGlua2VyLgotdGVtcGxhdGUgQ0NPY2Ns
dXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpD
Q09jY2x1c2lvblRyYWNrZXJCYXNlKEludFJlY3Qgc2Npc3NvclJlY3RJblNjcmVlblNwYWNlKTsK
K3RlbXBsYXRlIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3Vy
ZmFjZUNocm9taXVtPjo6Q0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0
SW5TY3JlZW5TcGFjZSwgYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpOwogdGVtcGxhdGUgdm9p
ZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJv
bWl1bT46OmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21p
dW0qIG5ld1RhcmdldCk7CiB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5
ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6ZmluaXNoZWRUYXJnZXRSZW5kZXJT
dXJmYWNlKGNvbnN0IExheWVyQ2hyb21pdW0qIG93bmluZ0xheWVyLCBjb25zdCBSZW5kZXJTdXJm
YWNlQ2hyb21pdW0qIGZpbmlzaGVkVGFyZ2V0KTsKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25U
cmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpsZWF2ZVRv
VGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIG5ld1Rhcmdl
dCk7CkBAIC0zNTYsNyArMzU2LDcgQEAgdGVtcGxhdGUgY29uc3QgUmVnaW9uJiBDQ09jY2x1c2lv
blRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWkKIHRlbXBsYXRl
IGNvbnN0IFJlZ2lvbiYgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5k
ZXJTdXJmYWNlQ2hyb21pdW0+OjpjdXJyZW50T2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkgY29u
c3Q7CiB0ZW1wbGF0ZSBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1
bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFj
ZShjb25zdCBMYXllckNocm9taXVtKikgY29uc3Q7CiAKLXRlbXBsYXRlIENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OkNDT2NjbHVzaW9uVHJhY2tl
ckJhc2UoSW50UmVjdCBzY2lzc29yUmVjdEluU2NyZWVuU3BhY2UpOwordGVtcGxhdGUgQ0NPY2Ns
dXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6Q0NPY2NsdXNp
b25UcmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgYm9vbCByZWNv
cmRNZXRyaWNzRm9yRnJhbWUpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNl
PENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjplbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
Y29uc3QgQ0NSZW5kZXJTdXJmYWNlKiBuZXdUYXJnZXQpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1
c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpmaW5pc2hlZFRh
cmdldFJlbmRlclN1cmZhY2UoY29uc3QgQ0NMYXllckltcGwqIG93bmluZ0xheWVyLCBjb25zdCBD
Q1JlbmRlclN1cmZhY2UqIGZpbmlzaGVkVGFyZ2V0KTsKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNp
b25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6bGVhdmVUb1Rhcmdl
dFJlbmRlclN1cmZhY2UoY29uc3QgQ0NSZW5kZXJTdXJmYWNlKiBuZXdUYXJnZXQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2Ns
dXNpb25UcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaAppbmRleCAyODJkZWZmZGYyNTY0YmUzZjkwMTNkMmU5
MjAyNmU5YjhkNmUyYWZkLi41MzBlNmYzZGYxZDAwMjAyNzMzNDMzNTU1ZDAxYWIzZDkyNTc4NTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ09jY2x1c2lvblRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaApAQCAtNDYsNyArNDYsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgog
Y2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyQmFzZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q0NPY2NsdXNpb25UcmFja2VyQmFzZSk7CiBwdWJsaWM6Ci0gICAgQ0NPY2NsdXNpb25UcmFja2Vy
QmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSk7CisgICAgQ0NPY2NsdXNpb25U
cmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgYm9vbCByZWNvcmRN
ZXRyaWNzRm9yRnJhbWUpOwogCiAgICAgLy8gQ2FsbGVkIHdoZW4gdmlzaXRpbmcgYSBsYXllciBy
ZXByZXNlbnRpbmcgaXRzZWxmLiBJZiB0aGUgdGFyZ2V0IHdhcyBub3QgYWxyZWFkeSBjdXJyZW50
LCB0aGVuIHRoaXMgaW5kaWNhdGVzIHdlIGhhdmUgZW50ZXJlZCBhIG5ldyBzdXJmYWNlIHN1YnRy
ZWUuCiAgICAgdm9pZCBlbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgUmVuZGVyU3VyZmFj
ZVR5cGUqIG5ld1RhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5jcHAKaW5k
ZXggYTc3ZGM2OWYwNjFiNTA4M2I4OGM4YjU4ZjI5MDhjM2M0OTUwNjRjNC4uODg1YzNiMDM0ZmRj
YTFhNDk5MGJmOWIxYWQyMDQ5MDk3OWI3NDZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdN
ZXRyaWNzLmNwcApAQCAtMzcsOCArMzcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUND
T3ZlcmRyYXdNZXRyaWNzOjpDQ092ZXJkcmF3TWV0cmljcygpCi0gICAgOiBtX3BpeGVsc0RyYXdu
T3BhcXVlKDApCitDQ092ZXJkcmF3TWV0cmljczo6Q0NPdmVyZHJhd01ldHJpY3MoYm9vbCByZWNv
cmRNZXRyaWNzRm9yRnJhbWUpCisgICAgOiBtX3JlY29yZE1ldHJpY3NGb3JGcmFtZShyZWNvcmRN
ZXRyaWNzRm9yRnJhbWUpCisgICAgLCBtX3BpeGVsc0RyYXduT3BhcXVlKDApCiAgICAgLCBtX3Bp
eGVsc0RyYXduVHJhbnNsdWNlbnQoMCkKICAgICAsIG1fcGl4ZWxzQ3VsbGVkKDApCiB7CkBAIC02
MCw2ICs2MSw5IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgcXVhZEFyZWEoY29uc3QgRmxvYXRRdWFk
JiBxdWFkKQogCiB2b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpkaWRDdWxsKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1RhcmdldCwgY29uc3QgSW50UmVjdCYgYmVmb3JlQ3Vs
bFJlY3QsIGNvbnN0IEludFJlY3QmIGFmdGVyQ3VsbFJlY3QpCiB7CisgICAgaWYgKCFtX3JlY29y
ZE1ldHJpY3NGb3JGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZmxvYXQgYmVmb3JlQ3Vs
bEFyZWEgPSBxdWFkQXJlYSh0cmFuc2Zvcm1Ub1RhcmdldC5tYXBRdWFkKEZsb2F0UXVhZChiZWZv
cmVDdWxsUmVjdCkpKTsKICAgICBmbG9hdCBhZnRlckN1bGxBcmVhID0gcXVhZEFyZWEodHJhbnNm
b3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1YWQoYWZ0ZXJDdWxsUmVjdCkpKTsKIApAQCAtNjgs
NiArNzIsOSBAQCB2b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpkaWRDdWxsKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1RhcmdldCwgYwogCiB2b2lkIENDT3ZlcmRyYXdNZXRy
aWNzOjpkaWREcmF3KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1Rhcmdl
dCwgY29uc3QgSW50UmVjdCYgYWZ0ZXJDdWxsUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVj
dCkKIHsKKyAgICBpZiAoIW1fcmVjb3JkTWV0cmljc0ZvckZyYW1lKQorICAgICAgICByZXR1cm47
CisKICAgICBmbG9hdCBhZnRlckN1bGxBcmVhID0gcXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQu
bWFwUXVhZChGbG9hdFF1YWQoYWZ0ZXJDdWxsUmVjdCkpKTsKICAgICBmbG9hdCBhZnRlckN1bGxP
cGFxdWVBcmVhID0gcXVhZEFyZWEodHJhbnNmb3JtVG9UYXJnZXQubWFwUXVhZChGbG9hdFF1YWQo
aW50ZXJzZWN0aW9uKG9wYXF1ZVJlY3QsIGFmdGVyQ3VsbFJlY3QpKSkpOwogCkBAIC03NywxMiAr
ODQsMTQgQEAgdm9pZCBDQ092ZXJkcmF3TWV0cmljczo6ZGlkRHJhdyhjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQsIGMKIAogdm9pZCBDQ092ZXJkcmF3TWV0cmlj
czo6cmVjb3JkTWV0cmljcyhjb25zdCBDQ0xheWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QpIGNv
bnN0CiB7Ci0gICAgcmVjb3JkTWV0cmljc0ludGVybmFsPENDTGF5ZXJUcmVlSG9zdD4oVVBMT0FE
SU5HLCBsYXllclRyZWVIb3N0KTsKKyAgICBpZiAobV9yZWNvcmRNZXRyaWNzRm9yRnJhbWUpCisg
ICAgICAgIHJlY29yZE1ldHJpY3NJbnRlcm5hbDxDQ0xheWVyVHJlZUhvc3Q+KFVQTE9BRElORywg
bGF5ZXJUcmVlSG9zdCk7CiB9CiAKIHZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OnJlY29yZE1ldHJp
Y3MoY29uc3QgQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdCkgY29uc3QKIHsKLSAg
ICByZWNvcmRNZXRyaWNzSW50ZXJuYWw8Q0NMYXllclRyZWVIb3N0SW1wbD4oRFJBV0lORywgbGF5
ZXJUcmVlSG9zdCk7CisgICAgaWYgKG1fcmVjb3JkTWV0cmljc0ZvckZyYW1lKQorICAgICAgICBy
ZWNvcmRNZXRyaWNzSW50ZXJuYWw8Q0NMYXllclRyZWVIb3N0SW1wbD4oRFJBV0lORywgbGF5ZXJU
cmVlSG9zdCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHJlZUhvc3RUeXBlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NP
dmVyZHJhd01ldHJpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmgKaW5kZXggNDg5Y2E1NjljNTI1NTM4OWNjZjMwMmE0
YzM4Y2Q4N2Y2MjBjYzFmNC4uYmRjMDM4MDc5YzEyYzZmMGE4ZTdmZDY0YjFlNGZhNTMyYTFmOGZi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NPdmVyZHJhd01ldHJpY3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5oCkBAIC0zNiw3ICszNiw3IEBAIGNs
YXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiAvLyBGSVhNRTogY29tcHV0ZSBvdmVyZHJhdyBtZXRy
aWNzIG9ubHkgb2NjYXNpb25hbGx5LCBub3QgZXZlcnkgZnJhbWUuCiBjbGFzcyBDQ092ZXJkcmF3
TWV0cmljcyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NPdmVyZHJhd01ldHJp
Y3M+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ092ZXJkcmF3TWV0cmljcygpKTsg
fQorICAgIHN0YXRpYyBQYXNzT3duUHRyPENDT3ZlcmRyYXdNZXRyaWNzPiBjcmVhdGUoYm9vbCBy
ZWNvcmRNZXRyaWNzRm9yRnJhbWUpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ092ZXJkcmF3TWV0
cmljcyhyZWNvcmRNZXRyaWNzRm9yRnJhbWUpKTsgfQogCiAgICAgdm9pZCBkaWRDdWxsKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1RhcmdldCwgY29uc3QgSW50UmVjdCYg
YmVmb3JlQ3VsbFJlY3QsIGNvbnN0IEludFJlY3QmIGFmdGVyQ3VsbFJlY3QpOwogICAgIHZvaWQg
ZGlkRHJhdyhjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQsIGNv
bnN0IEludFJlY3QmIGFmdGVyQ3VsbFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpOwpA
QCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgcGl4ZWxzQ3VsbGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9waXhlbHNDdWxsZWQ7IH0KIAogcHJpdmF0ZToKLSAgICBDQ092ZXJkcmF3TWV0
cmljcygpOworICAgIENDT3ZlcmRyYXdNZXRyaWNzKGJvb2wgcmVjb3JkTWV0cmljc0ZvckZyYW1l
KTsKIAogICAgIGVudW0gTWV0cmljc1R5cGUgewogICAgICAgICBEUkFXSU5HLApAQCAtNjAsNiAr
NjAsOCBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHJlZUhvc3RUeXBl
PgogICAgIHZvaWQgcmVjb3JkTWV0cmljc0ludGVybmFsKE1ldHJpY3NUeXBlLCBjb25zdCBMYXll
clRyZWVIb3N0VHlwZSopIGNvbnN0OwogCisgICAgLy8gV2hlbiBmYWxzZSB0aGlzIGNsYXNzIGlz
IGEgZ2lhbnQgbm8tb3AuCisgICAgYm9vbCBtX3JlY29yZE1ldHJpY3NGb3JGcmFtZTsKICAgICAv
LyBDb3VudCBvZiBwaXhlbHMgdGhhdCBhcmUgb3BhcXVlIChhbmQgdGh1cyBvY2NsdWRlKS4gSWRl
YWxseSB0aGlzIGlzIG5vIG1vcmUKICAgICAvLyB0aGFuIHdpZXdwb3J0IHdpZHRoIHggaGVpZ2h0
LgogICAgIGZsb2F0IG1fcGl4ZWxzRHJhd25PcGFxdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcAppbmRleCBmMjIw
MTUyNDMwYTcxMTliOTlhMTBmNTZhNmFjZWE0ZTU4MDQ4ODI4Li4zYTM5YzUwOTI0MGQzODI2OWEx
YTVhMzYyOWJlYmE2YTk1Njg3OTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKQEAgLTczLDggKzczLDggQEAg
cHJpdmF0ZToKIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3Vy
ZmFjZVR5cGU+CiBjbGFzcyBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZSA6IHB1YmxpYyBDQ09j
Y2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+IHsKIHB1Ymxp
YzoKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjcmVlblNjaXNzb3JS
ZWN0KQotICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJT
dXJmYWNlVHlwZT4oc2NyZWVuU2Npc3NvclJlY3QpCisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tl
ckJhc2UoSW50UmVjdCBzY3JlZW5TY2lzc29yUmVjdCwgYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJh
bWUgPSBmYWxzZSkKKyAgICAgICAgOiBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwg
UmVuZGVyU3VyZmFjZVR5cGU+KHNjcmVlblNjaXNzb3JSZWN0LCByZWNvcmRNZXRyaWNzRm9yRnJh
bWUpCiAgICAgICAgICwgbV9vdmVycmlkZUxheWVyU2Npc3NvclJlY3QoZmFsc2UpCiAgICAgewog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3Vs
bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRl
c3QuY3BwCmluZGV4IDE1OGIwYzA4YjcwZjFjMWY4Njk3ZDcxMjkwYmI5Y2U2ZTZkM2I3YTQuLmRj
ZTcwNzMwYzRkZmE5ZDdkYTUwYmJiOTIyYTU4ZTNhYjUzNDNlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcApAQCAtNDAsOCArNDAs
OCBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCA6IHB1
YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VySW1wbChjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdEluU2NyZWVuKQotICAgICAg
ICA6IENDT2NjbHVzaW9uVHJhY2tlckltcGwoc2Npc3NvclJlY3RJblNjcmVlbikKKyAgICBUZXN0
Q0NPY2NsdXNpb25UcmFja2VySW1wbChjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdEluU2NyZWVu
LCBib29sIHJlY29yZE1ldHJpY3NGb3JGcmFtZSA9IHRydWUpCisgICAgICAgIDogQ0NPY2NsdXNp
b25UcmFja2VySW1wbChzY2lzc29yUmVjdEluU2NyZWVuLCByZWNvcmRNZXRyaWNzRm9yRnJhbWUp
CiAgICAgICAgICwgbV9zY2lzc29yUmVjdEluU2NyZWVuKHNjaXNzb3JSZWN0SW5TY3JlZW4pCiAg
ICAgewogICAgICAgICAvLyBQcmV0ZW5kIHdlIGhhdmUgdmlzaXRlZCBhIHJlbmRlciBzdXJmYWNl
LgpAQCAtNDQ1LDQgKzQ0NSwyMiBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxP
dXRzaWRlU2Npc3Nvck92ZXJOb1RpbGVzKQogICAgIEVYUEVDVF9ORUFSKG9jY2x1c2lvblRyYWNr
ZXIub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzQ3VsbGVkKCksIDEzMDAwMCwgMSk7CiB9CiAKK1RF
U1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5V2l0aG91dE1ldHJpY3MpCit7CisgICAgREVDTEFS
RV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCisKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1w
bD4gcm9vdExheWVyID0gbWFrZUxheWVyKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0
LCAxLjAsIHRydWUsIEludFJlY3QoKSk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNo
aWxkTGF5ZXIgPSBtYWtlTGF5ZXIoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAx
LjAsIHRydWUsIEludFJlY3QoKSk7CisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2Nj
bHVzaW9uVHJhY2tlcihJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApLCBmYWxzZSk7CisKKyAgICBh
cHBlbmRRdWFkcyhxdWFkTGlzdCwgY2hpbGRMYXllci5nZXQoKSwgb2NjbHVzaW9uVHJhY2tlcik7
CisgICAgb2NjbHVzaW9uVHJhY2tlci5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZExheWVy
LmdldCgpKTsKKyAgICBhcHBlbmRRdWFkcyhxdWFkTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2Ns
dXNpb25UcmFja2VyKTsKKyAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCA5dSk7CisgICAg
RVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3
bk9wYXF1ZSgpLCAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJk
cmF3TWV0cmljcygpLnBpeGVsc0RyYXduVHJhbnNsdWNlbnQoKSwgMCwgMSk7CisgICAgRVhQRUNU
X05FQVIob2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNDdWxsZWQoKSwg
MCwgMSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDdlZWJiOTcx
NDY4NmFlZTExM2JlMDJmYWFlODU2ZTUyMGE2NWMxOGIuLmQ0YTBjN2RmNDE4OWYwMGNlMWY2ZTJh
YTgzYzUxZDRlYzk0MTQ1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNTEsNyArNTEsNyBAQCBuYW1l
c3BhY2UgewogY2xhc3MgVGVzdENDT2NjbHVzaW9uVHJhY2tlciA6IHB1YmxpYyBDQ09jY2x1c2lv
blRyYWNrZXIgewogcHVibGljOgogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIoKQotICAgICAg
ICA6IENDT2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKQorICAgICAg
ICA6IENDT2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApLCB0cnVlKQog
ICAgICAgICAsIG1fc2Npc3NvclJlY3RJblNjcmVlbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDAp
KQogICAgIHsKICAgICAgICAgLy8gUHJldGVuZCB3ZSBoYXZlIHZpc2l0ZWQgYSByZW5kZXIgc3Vy
ZmFjZS4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132882</attachid>
            <date>2012-03-20 13:02:18 -0700</date>
            <delta_ts>2012-03-20 14:36:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81431-20120320160217.patch</filename>
            <type>text/plain</type>
            <size>16683</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjg2ZWFlYjI3MjI5ODBj
YmE5M2RiYjgyZjA2ZTFhYzA1YTU3ODZhMS4uYWM2MzA0YTE2MTVkNDBiNjk3YTllY2QwOWI4NzAz
MGZiNzRlYjAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTAzLTE2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWxs
b3cgdXMgdG8gZGlzYWJsZSBvdmVyZHJhdyBtZXRyaWNzIHdoZW4gdHJhY2luZyBpcyBvZmYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNDMxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRyaWVubmUgV2Fsa2VyLgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGFsbG93cyB1cyB0byBkaXNhYmxlIG92ZXJkcmF3IG1ldHJpY3MgY29uZGl0aW9uYWxseSBpbiB0
aGUKKyAgICAgICAgZnV0dXJlIHdpdGggYSBvbmUtbGluZSBjaGFuZ2UgaW4gZWFjaCBMYXllclRy
ZWVIb3N0IGNsYXNzLgorCisgICAgICAgIFVuaXQgdGVzdDogQ0NRdWFkQ3VsbGVyVGVzdC52ZXJp
ZnlXaXRob3V0TWV0cmljcworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dDo6cGFpbnRMYXllckNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3Nlcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ojo6Q0NPY2NsdXNpb25UcmFja2VyQmFzZSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNr
ZXIuaDoKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlckJhc2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDT3ZlcmRyYXdNZXRyaWNzOjpDQ092ZXJkcmF3TWV0cmljcyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ092ZXJkcmF3TWV0cmljczo6ZGlkQ3VsbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ092ZXJkcmF3TWV0cmljczo6ZGlkRHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDQ092ZXJk
cmF3TWV0cmljczo6cmVjb3JkTWV0cmljcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDT3Zl
cmRyYXdNZXRyaWNzOjpjcmVhdGUpOgorICAgICAgICAoQ0NPdmVyZHJhd01ldHJpY3MpOgorCiAy
MDEyLTAzLTIwICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IE9wZW4gcmVzb3VyY2UgZGlhbG9nIHNjcmlwdHMgbGlzdCBzaG91
bGQgYmUgc29ydGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiMjUzMWM3MjcxZmM5
MjM1ZmI5MWVjZjNlOTdkMjllMjE3MjZkYjc2Li4xMjAxMGIxNGJhZGEyMzQ1Y2YxNmUyZWRiODFk
MWIyMmY1NjhkZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDEyLTAzLTE2ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQWxsb3cgdXMgdG8gZGlzYWJsZSBvdmVyZHJhdyBtZXRyaWNzIHdoZW4g
dHJhY2luZyBpcyBvZmYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgxNDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRyaWVubmUgV2Fsa2VyLgorCisg
ICAgICAgICogdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckJh
c2UpOgorICAgICAgICAqIHRlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGw6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXVEY6OlRl
c3RDQ09jY2x1c2lvblRyYWNrZXI6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXIpOgorCiAyMDEyLTAz
LTIwICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gVXNlIG9wYXF1ZSBjb250ZW50cyBmb3IgcGFpbnQgY3VsbGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYTE0MmJlMzA5OTJhOWU3ODQ2NDM3OTc0MDI0MWE1ZmVh
NGM1NjI1OC4uYWQ0MDBlOTc5YmVjZTJmY2Y4MDdlYzljN2VhYmM0NDQ3NTljNzI3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC01NDcsNyArNTQ3LDggQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1
cmZhY2VMYXllckxpc3QKICAgICAvLyBVc2UgRnJvbnRUb0JhY2sgdG8gYWxsb3cgZm9yIHRlc3Rp
bmcgb2NjbHVzaW9uIGFuZCBwZXJmb3JtaW5nIGN1bGxpbmcgZHVyaW5nIHRoZSB0cmVlIHdhbGsu
CiAgICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0
cjxMYXllckNocm9taXVtPiA+LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRv
ckFjdGlvbnM6OkZyb250VG9CYWNrPiBDQ0xheWVySXRlcmF0b3JUeXBlOwogCi0gICAgQ0NPY2Ns
dXNpb25UcmFja2VyIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdChJbnRQb2ludCgpLCB2aWV3cG9y
dFNpemUoKSkpOworICAgIGJvb2wgcmVjb3JkTWV0cmljc0ZvckZyYW1lID0gdHJ1ZTsgLy8gRklY
TUU6IEluIHRoZSBmdXR1cmUsIGRpc2FibGUgdGhpcyB3aGVuIGFib3V0OnRyYWNpbmcgaXMgb2Zm
LgorICAgIENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoSW50UG9p
bnQoKSwgdmlld3BvcnRTaXplKCkpLCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpOwogICAgIG9jY2x1
c2lvblRyYWNrZXIuc2V0VXNlUGFpbnRUcmFja2luZyh0cnVlKTsgLy8gRklYTUU6IFJlbW92ZSB0
aGlzIGFmdGVyIG0xOSBicmFuY2guCiAKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IEND
TGF5ZXJJdGVyYXRvclR5cGU6OmVuZCgmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGFkODkyZjI4ZjQ1ZmM3YjlkNDJi
MDY0NmQ5ODRiOGZjNDYxNTk2NmUuLjA3ODEyZTIxYzFjOWFkMTY2YjE4ODVkOWQ4OWU4ODRlNTdh
ODQwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yODAs
NyArMjgwLDkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNz
ZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzLCBDQ0xheWUKICAgICAgICAgc2Npc3NvclJlY3Qg
PSBlbmNsb3NpbmdJbnRSZWN0KG1fcm9vdERhbWFnZVJlY3QpOwogICAgIGVsc2UKICAgICAgICAg
c2Npc3NvclJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6ZSgpKTsKLSAgICBD
Q09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoc2Npc3NvclJlY3QpOworCisg
ICAgYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUgPSB0cnVlOyAvLyBGSVhNRTogSW4gdGhlIGZ1
dHVyZSwgZGlzYWJsZSB0aGlzIHdoZW4gYWJvdXQ6dHJhY2luZyBpcyBvZmYuCisgICAgQ0NPY2Ns
dXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKHNjaXNzb3JSZWN0LCByZWNvcmRNZXRy
aWNzRm9yRnJhbWUpOwogCiAgICAgLy8gQWRkIHF1YWRzIHRvIHRoZSBSZW5kZXIgcGFzc2VzIGlu
IEZyb250VG9CYWNrIG9yZGVyIHRvIGFsbG93IGZvciB0ZXN0aW5nIG9jY2x1c2lvbiBhbmQgcGVy
Zm9ybWluZyBjdWxsaW5nIGR1cmluZyB0aGUgdHJlZSB3YWxrLgogICAgIHR5cGVkZWYgQ0NMYXll
ckl0ZXJhdG9yPENDTGF5ZXJJbXBsLCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJm
YWNlLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gQ0NMYXllckl0ZXJhdG9y
VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCmluZGV4IDRjNjE3YWQ2
N2U0NjFmNmJmNmVmOGM2MjMwNTk1MGI3ZWE1Y2NmZDQuLjk3MTQ5NGI5MDg5ZDVjZjkwMjQ1OGVh
OWFlOWUzYTUzNjdiOGU1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNw
cApAQCAtMzksOSArMzksOSBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZh
Y2VUeXBlPgotQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VU
eXBlPjo6Q0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjaXNzb3JSZWN0SW5TY3JlZW5T
cGFjZSkKK0NDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlw
ZT46OkNDT2NjbHVzaW9uVHJhY2tlckJhc2UoSW50UmVjdCBzY2lzc29yUmVjdEluU2NyZWVuU3Bh
Y2UsIGJvb2wgcmVjb3JkTWV0cmljc0ZvckZyYW1lKQogICAgIDogbV9zY2lzc29yUmVjdEluU2Ny
ZWVuU3BhY2Uoc2Npc3NvclJlY3RJblNjcmVlblNwYWNlKQotICAgICwgbV9vdmVyZHJhd01ldHJp
Y3MoQ0NPdmVyZHJhd01ldHJpY3M6OmNyZWF0ZSgpKQorICAgICwgbV9vdmVyZHJhd01ldHJpY3Mo
Q0NPdmVyZHJhd01ldHJpY3M6OmNyZWF0ZShyZWNvcmRNZXRyaWNzRm9yRnJhbWUpKQogICAgICwg
bV91c2VQYWludFRyYWNraW5nKHRydWUpIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHBhaW50
IHRyYWNraW5nIGlzIG9uIGZvciBwYWludCBjdWxsaW5nLgogewogfQpAQCAtMzY5LDcgKzM2OSw3
IEBAIGNvbnN0IFJlZ2lvbiYgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRl
clN1cmZhY2VUeXBlPjo6Y3VycmVudE9jY2x1CiAKIAogLy8gRGVjbGFyZSB0aGUgcG9zc2libGUg
ZnVuY3Rpb25zIGhlcmUgZm9yIHRoZSBsaW5rZXIuCi10ZW1wbGF0ZSBDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OkNDT2NjbHVzaW9u
VHJhY2tlckJhc2UoSW50UmVjdCBzY2lzc29yUmVjdEluU2NyZWVuU3BhY2UpOwordGVtcGxhdGUg
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21p
dW0+OjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlKEludFJlY3Qgc2Npc3NvclJlY3RJblNjcmVlblNw
YWNlLCBib29sIHJlY29yZE1ldHJpY3NGb3JGcmFtZSk7CiB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6ZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSogbmV3VGFy
Z2V0KTsKIHRlbXBsYXRlIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVt
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpmaW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY29u
c3QgTGF5ZXJDaHJvbWl1bSogb3duaW5nTGF5ZXIsIGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1
bSogZmluaXNoZWRUYXJnZXQpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNl
PExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bT46OmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSogbmV3VGFyZ2V0KTsKQEAgLTM4
MCw3ICszODAsNyBAQCB0ZW1wbGF0ZSBjb25zdCBSZWdpb24mIENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taQogdGVtcGxhdGUgY29uc3QgUmVn
aW9uJiBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VD
aHJvbWl1bT46OmN1cnJlbnRPY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKSBjb25zdDsKIHRlbXBs
YXRlIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJT
dXJmYWNlQ2hyb21pdW0+OjpsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGNvbnN0IExh
eWVyQ2hyb21pdW0qKSBjb25zdDsKIAotdGVtcGxhdGUgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxD
Q0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPjo6Q0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRS
ZWN0IHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSk7Cit0ZW1wbGF0ZSBDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpDQ09jY2x1c2lvblRyYWNrZXJC
YXNlKEludFJlY3Qgc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBib29sIHJlY29yZE1ldHJpY3NG
b3JGcmFtZSk7CiB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllcklt
cGwsIENDUmVuZGVyU3VyZmFjZT46OmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBDQ1Jl
bmRlclN1cmZhY2UqIG5ld1RhcmdldCk7CiB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tl
ckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT46OmZpbmlzaGVkVGFyZ2V0UmVuZGVy
U3VyZmFjZShjb25zdCBDQ0xheWVySW1wbCogb3duaW5nTGF5ZXIsIGNvbnN0IENDUmVuZGVyU3Vy
ZmFjZSogZmluaXNoZWRUYXJnZXQpOwogdGVtcGxhdGUgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJC
YXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+OjpsZWF2ZVRvVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShjb25zdCBDQ1JlbmRlclN1cmZhY2UqIG5ld1RhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2Nj
bHVzaW9uVHJhY2tlci5oCmluZGV4IDI4MmRlZmZkZjI1NjRiZTNmOTAxM2QyZTkyMDI2ZTliOGQ2
ZTJhZmQuLjUzMGU2ZjNkZjFkMDAyMDI3MzM0MzM1NTVkMDFhYjNkOTI1Nzg1NGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVz
aW9uVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oCkBAIC00Niw3ICs0Niw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CiBjbGFzcyBDQ09j
Y2x1c2lvblRyYWNrZXJCYXNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ09jY2x1c2lv
blRyYWNrZXJCYXNlKTsKIHB1YmxpYzoKLSAgICBDQ09jY2x1c2lvblRyYWNrZXJCYXNlKEludFJl
Y3Qgc2Npc3NvclJlY3RJblNjcmVlblNwYWNlKTsKKyAgICBDQ09jY2x1c2lvblRyYWNrZXJCYXNl
KEludFJlY3Qgc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBib29sIHJlY29yZE1ldHJpY3NGb3JG
cmFtZSk7CiAKICAgICAvLyBDYWxsZWQgd2hlbiB2aXNpdGluZyBhIGxheWVyIHJlcHJlc2VudGlu
ZyBpdHNlbGYuIElmIHRoZSB0YXJnZXQgd2FzIG5vdCBhbHJlYWR5IGN1cnJlbnQsIHRoZW4gdGhp
cyBpbmRpY2F0ZXMgd2UgaGF2ZSBlbnRlcmVkIGEgbmV3IHN1cmZhY2Ugc3VidHJlZS4KICAgICB2
b2lkIGVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBSZW5kZXJTdXJmYWNlVHlwZSogbmV3
VGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmNwcAppbmRleCBhNzdkYzY5
ZjA2MWI1MDgzYjg4YzhiNThmMjkwOGMzYzQ5NTA2NGM0Li44ODVjM2IwMzRmZGNhMWE0OTkwYmY5
YjFhZDIwNDkwOTc5Yjc0NmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuY3Bw
CkBAIC0zNyw4ICszNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0NPdmVyZHJhd01l
dHJpY3M6OkNDT3ZlcmRyYXdNZXRyaWNzKCkKLSAgICA6IG1fcGl4ZWxzRHJhd25PcGFxdWUoMCkK
K0NDT3ZlcmRyYXdNZXRyaWNzOjpDQ092ZXJkcmF3TWV0cmljcyhib29sIHJlY29yZE1ldHJpY3NG
b3JGcmFtZSkKKyAgICA6IG1fcmVjb3JkTWV0cmljc0ZvckZyYW1lKHJlY29yZE1ldHJpY3NGb3JG
cmFtZSkKKyAgICAsIG1fcGl4ZWxzRHJhd25PcGFxdWUoMCkKICAgICAsIG1fcGl4ZWxzRHJhd25U
cmFuc2x1Y2VudCgwKQogICAgICwgbV9waXhlbHNDdWxsZWQoMCkKIHsKQEAgLTYwLDYgKzYxLDkg
QEAgc3RhdGljIGlubGluZSBmbG9hdCBxdWFkQXJlYShjb25zdCBGbG9hdFF1YWQmIHF1YWQpCiAK
IHZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OmRpZEN1bGwoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybVRvVGFyZ2V0LCBjb25zdCBJbnRSZWN0JiBiZWZvcmVDdWxsUmVjdCwgY29u
c3QgSW50UmVjdCYgYWZ0ZXJDdWxsUmVjdCkKIHsKKyAgICBpZiAoIW1fcmVjb3JkTWV0cmljc0Zv
ckZyYW1lKQorICAgICAgICByZXR1cm47CisKICAgICBmbG9hdCBiZWZvcmVDdWxsQXJlYSA9IHF1
YWRBcmVhKHRyYW5zZm9ybVRvVGFyZ2V0Lm1hcFF1YWQoRmxvYXRRdWFkKGJlZm9yZUN1bGxSZWN0
KSkpOwogICAgIGZsb2F0IGFmdGVyQ3VsbEFyZWEgPSBxdWFkQXJlYSh0cmFuc2Zvcm1Ub1Rhcmdl
dC5tYXBRdWFkKEZsb2F0UXVhZChhZnRlckN1bGxSZWN0KSkpOwogCkBAIC02OCw2ICs3Miw5IEBA
IHZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OmRpZEN1bGwoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybVRvVGFyZ2V0LCBjCiAKIHZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OmRpZERy
YXcoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZ2V0LCBjb25zdCBJ
bnRSZWN0JiBhZnRlckN1bGxSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KQogeworICAg
IGlmICghbV9yZWNvcmRNZXRyaWNzRm9yRnJhbWUpCisgICAgICAgIHJldHVybjsKKwogICAgIGZs
b2F0IGFmdGVyQ3VsbEFyZWEgPSBxdWFkQXJlYSh0cmFuc2Zvcm1Ub1RhcmdldC5tYXBRdWFkKEZs
b2F0UXVhZChhZnRlckN1bGxSZWN0KSkpOwogICAgIGZsb2F0IGFmdGVyQ3VsbE9wYXF1ZUFyZWEg
PSBxdWFkQXJlYSh0cmFuc2Zvcm1Ub1RhcmdldC5tYXBRdWFkKEZsb2F0UXVhZChpbnRlcnNlY3Rp
b24ob3BhcXVlUmVjdCwgYWZ0ZXJDdWxsUmVjdCkpKSk7CiAKQEAgLTc3LDEyICs4NCwxNCBAQCB2
b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpkaWREcmF3KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm1Ub1RhcmdldCwgYwogCiB2b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpyZWNvcmRN
ZXRyaWNzKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCkgY29uc3QKIHsKLSAg
ICByZWNvcmRNZXRyaWNzSW50ZXJuYWw8Q0NMYXllclRyZWVIb3N0PihVUExPQURJTkcsIGxheWVy
VHJlZUhvc3QpOworICAgIGlmIChtX3JlY29yZE1ldHJpY3NGb3JGcmFtZSkKKyAgICAgICAgcmVj
b3JkTWV0cmljc0ludGVybmFsPENDTGF5ZXJUcmVlSG9zdD4oVVBMT0FESU5HLCBsYXllclRyZWVI
b3N0KTsKIH0KIAogdm9pZCBDQ092ZXJkcmF3TWV0cmljczo6cmVjb3JkTWV0cmljcyhjb25zdCBD
Q0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0KSBjb25zdAogewotICAgIHJlY29yZE1l
dHJpY3NJbnRlcm5hbDxDQ0xheWVyVHJlZUhvc3RJbXBsPihEUkFXSU5HLCBsYXllclRyZWVIb3N0
KTsKKyAgICBpZiAobV9yZWNvcmRNZXRyaWNzRm9yRnJhbWUpCisgICAgICAgIHJlY29yZE1ldHJp
Y3NJbnRlcm5hbDxDQ0xheWVyVHJlZUhvc3RJbXBsPihEUkFXSU5HLCBsYXllclRyZWVIb3N0KTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUcmVlSG9zdFR5cGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0
cmljcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NP
dmVyZHJhd01ldHJpY3MuaAppbmRleCA0ODljYTU2OWM1MjU1Mzg5Y2NmMzAyYTRjMzhjZDg3ZjYy
MGNjMWY0Li5lMjI0YzdkY2NkMmI3ZTc0YTQyYjJmMjRiMzgzNDdmMGUzMmZmM2Q3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJk
cmF3TWV0cmljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQ0NMYXll
clRyZWVIb3N0SW1wbDsKIC8vIEZJWE1FOiBjb21wdXRlIG92ZXJkcmF3IG1ldHJpY3Mgb25seSBv
Y2Nhc2lvbmFsbHksIG5vdCBldmVyeSBmcmFtZS4KIGNsYXNzIENDT3ZlcmRyYXdNZXRyaWNzIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ092ZXJkcmF3TWV0cmljcz4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IENDT3ZlcmRyYXdNZXRyaWNzKCkpOyB9CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8Q0NPdmVyZHJhd01ldHJpY3M+IGNyZWF0ZShib29sIHJlY29yZE1ldHJp
Y3NGb3JGcmFtZSkgeyByZXR1cm4gYWRvcHRQdHIobmV3IENDT3ZlcmRyYXdNZXRyaWNzKHJlY29y
ZE1ldHJpY3NGb3JGcmFtZSkpOyB9CiAKICAgICB2b2lkIGRpZEN1bGwoY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZ2V0LCBjb25zdCBJbnRSZWN0JiBiZWZvcmVDdWxs
UmVjdCwgY29uc3QgSW50UmVjdCYgYWZ0ZXJDdWxsUmVjdCk7CiAgICAgdm9pZCBkaWREcmF3KGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1RhcmdldCwgY29uc3QgSW50UmVj
dCYgYWZ0ZXJDdWxsUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCk7CkBAIC01MCw3ICs1
MCw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBwaXhlbHNDdWxsZWQoKSBjb25zdCB7IHJldHVybiBt
X3BpeGVsc0N1bGxlZDsgfQogCiBwcml2YXRlOgotICAgIENDT3ZlcmRyYXdNZXRyaWNzKCk7Cisg
ICAgZXhwbGljaXQgQ0NPdmVyZHJhd01ldHJpY3MoYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUp
OwogCiAgICAgZW51bSBNZXRyaWNzVHlwZSB7CiAgICAgICAgIERSQVdJTkcsCkBAIC02MCw2ICs2
MCw4IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUcmVlSG9zdFR5cGU+
CiAgICAgdm9pZCByZWNvcmRNZXRyaWNzSW50ZXJuYWwoTWV0cmljc1R5cGUsIGNvbnN0IExheWVy
VHJlZUhvc3RUeXBlKikgY29uc3Q7CiAKKyAgICAvLyBXaGVuIGZhbHNlIHRoaXMgY2xhc3MgaXMg
YSBnaWFudCBuby1vcC4KKyAgICBib29sIG1fcmVjb3JkTWV0cmljc0ZvckZyYW1lOwogICAgIC8v
IENvdW50IG9mIHBpeGVscyB0aGF0IGFyZSBvcGFxdWUgKGFuZCB0aHVzIG9jY2x1ZGUpLiBJZGVh
bGx5IHRoaXMgaXMgbm8gbW9yZQogICAgIC8vIHRoYW4gd2lld3BvcnQgd2lkdGggeCBoZWlnaHQu
CiAgICAgZmxvYXQgbV9waXhlbHNEcmF3bk9wYXF1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwCmluZGV4IDc1ODlh
M2M4NjY0MTg3ZWJmNDhjM2VhYzAyOGE0ZTEyZjdkYjExNDUuLjFlOWQ4ZDI4M2UxYmIyNDRhZjQ0
OGM4NmYxNTg3ZDMyNDcxOWE2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcApAQCAtNzUsOCArNzUsOCBAQCBw
cml2YXRlOgogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJm
YWNlVHlwZT4KIGNsYXNzIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlIDogcHVibGljIENDT2Nj
bHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gewogcHVibGlj
OgotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlKEludFJlY3Qgc2NyZWVuU2Npc3NvclJl
Y3QpCi0gICAgICAgIDogQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1
cmZhY2VUeXBlPihzY3JlZW5TY2lzc29yUmVjdCkKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
QmFzZShJbnRSZWN0IHNjcmVlblNjaXNzb3JSZWN0LCBib29sIHJlY29yZE1ldHJpY3NGb3JGcmFt
ZSA9IGZhbHNlKQorICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBS
ZW5kZXJTdXJmYWNlVHlwZT4oc2NyZWVuU2Npc3NvclJlY3QsIHJlY29yZE1ldHJpY3NGb3JGcmFt
ZSkKICAgICAgICAgLCBtX292ZXJyaWRlTGF5ZXJTY2lzc29yUmVjdChmYWxzZSkKICAgICB7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxs
ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVz
dC5jcHAKaW5kZXggMTFhMDg5YTUyY2RlYzliZWQ0ZWZiM2RjMjEyNGEzZjNlNDNiNzU5Zi4uYzFi
YmNlNjI1MjZkMTUzYmU1ODI5ZTVhOWFmYWY5OTdmODE3OWQ4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC00MCw4ICs0MCw4
IEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIDogcHVi
bGljIENDT2NjbHVzaW9uVHJhY2tlckltcGwgewogcHVibGljOgotICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJJbXBsKGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0SW5TY3JlZW4pCi0gICAgICAg
IDogQ0NPY2NsdXNpb25UcmFja2VySW1wbChzY2lzc29yUmVjdEluU2NyZWVuKQorICAgIFRlc3RD
Q09jY2x1c2lvblRyYWNrZXJJbXBsKGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0SW5TY3JlZW4s
IGJvb2wgcmVjb3JkTWV0cmljc0ZvckZyYW1lID0gdHJ1ZSkKKyAgICAgICAgOiBDQ09jY2x1c2lv
blRyYWNrZXJJbXBsKHNjaXNzb3JSZWN0SW5TY3JlZW4sIHJlY29yZE1ldHJpY3NGb3JGcmFtZSkK
ICAgICAgICAgLCBtX3NjaXNzb3JSZWN0SW5TY3JlZW4oc2Npc3NvclJlY3RJblNjcmVlbikKICAg
ICB7CiAgICAgICAgIC8vIFByZXRlbmQgd2UgaGF2ZSB2aXNpdGVkIGEgcmVuZGVyIHN1cmZhY2Uu
CkBAIC00NDcsNCArNDQ3LDIyIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbE91
dHNpZGVTY2lzc29yT3Zlck5vVGlsZXMpCiAgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tl
ci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNDdWxsZWQoKSwgMTMwMDAwLCAxKTsKIH0KIAorVEVT
VChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlXaXRob3V0TWV0cmljcykKK3sKKyAgICBERUNMQVJF
X0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKKworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBs
PiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3Qs
IDEuMCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hp
bGRMYXllciA9IG1ha2VMYXllcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBjaGlsZFJlY3QsIDEu
MCwgdHJ1ZSwgSW50UmVjdCgpKTsKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2Ns
dXNpb25UcmFja2VyKEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCksIGZhbHNlKTsKKworICAgIGFw
cGVuZFF1YWRzKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGNoaWxkTGF5ZXIuZ2V0KCksIG9j
Y2x1c2lvblRyYWNrZXIpOworICAgIG9jY2x1c2lvblRyYWNrZXIubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIoY2hpbGRMYXllci5nZXQoKSk7CisgICAgYXBwZW5kUXVhZHMocXVhZExpc3QsIHNoYXJl
ZFN0YXRlTGlzdCwgcm9vdExheWVyLmdldCgpLCBvY2NsdXNpb25UcmFja2VyKTsKKyAgICBFWFBF
Q1RfRVEocXVhZExpc3Quc2l6ZSgpLCA5dSk7CisgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJh
Y2tlci5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNEcmF3bk9wYXF1ZSgpLCAwLCAxKTsKKyAgICBF
WFBFQ1RfTkVBUihvY2NsdXNpb25UcmFja2VyLm92ZXJkcmF3TWV0cmljcygpLnBpeGVsc0RyYXdu
VHJhbnNsdWNlbnQoKSwgMCwgMSk7CisgICAgRVhQRUNUX05FQVIob2NjbHVzaW9uVHJhY2tlci5v
dmVyZHJhd01ldHJpY3MoKS5waXhlbHNDdWxsZWQoKSwgMCwgMSk7Cit9CisKKwogfSAvLyBuYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXll
ckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDUzNjhjMjkzNDdmZGUzMzc4YWZiNTc1MjM2ZjQ2ZWQx
MjBkYWViMWIuLjk0ZjllYjRkOGEyNjZiNmEzZjYzZjdiYzkwNzMyMjUyNzRmYTVjMWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21p
dW1UZXN0LmNwcApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgewogY2xhc3MgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlciA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXIgewogcHVibGljOgogICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXIoKQotICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlcihJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKQorICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlcihJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApLCB0cnVlKQogICAgICAgICAsIG1fc2Npc3NvclJlY3RJ
blNjcmVlbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKQogICAgIHsKICAgICAgICAgLy8gUHJl
dGVuZCB3ZSBoYXZlIHZpc2l0ZWQgYSByZW5kZXIgc3VyZmFjZS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>