<?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>163610</bug_id>
          
          <creation_ts>2016-10-18 12:31:02 -0700</creation_ts>
          <short_desc>AX: [Mac] Meter element should use AXValueDescription to descrbe the status of the value</short_desc>
          <delta_ts>2016-10-19 09:51:30 -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>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nan Wang">n_wang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>n_wang</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1241552</commentid>
    <comment_count>0</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-10-18 12:31:02 -0700</bug_when>
    <thetext>Use AXValueDescription to describe the status of the value using “Optimal”, “Suboptimal” and “Critical” by aligning with UIA and MSAA see http://www.w3.org/TR/html51/semantics.html#the-meter-element

&lt;rdar://problem/26638677&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241573</commentid>
    <comment_count>1</comment_count>
      <attachid>291976</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-10-18 13:00:18 -0700</bug_when>
    <thetext>Created attachment 291976
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241576</commentid>
    <comment_count>2</comment_count>
      <attachid>291976</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-10-18 13:04:51 -0700</bug_when>
    <thetext>Comment on attachment 291976
patch

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

&gt; Source/WebCore/accessibility/AccessibilityProgressIndicator.cpp:176
&gt; +    // Only expose this when the author has explicitly specified following attributes.

specified &quot;the&quot; following

&gt; Source/WebCore/accessibility/AccessibilityProgressIndicator.cpp:184
&gt; +            description = &quot;optimum&quot;;

I think we can return directly from this switch statement instead of setting a value

&gt; Source/WebCore/accessibility/AccessibilityProgressIndicator.cpp:190
&gt; +            description = &quot;less good&quot;;

I think either this method should return the enum or it should return the localized string itself

right now it returns an intermediary form which still needs to be processed further</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241606</commentid>
    <comment_count>3</comment_count>
      <attachid>291982</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-10-18 13:54:53 -0700</bug_when>
    <thetext>Created attachment 291982
patch

updated from review and should&apos;ve fixed the build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241635</commentid>
    <comment_count>4</comment_count>
      <attachid>291982</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-10-18 15:05:10 -0700</bug_when>
    <thetext>Comment on attachment 291982
patch

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

&gt; Source/WebCore/accessibility/AccessibilityProgressIndicator.cpp:175
&gt; +    if (!m_renderer || !m_renderer-&gt;isMeter())

why do we only want this on COCOA? (does COCOA also mean iOS?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241640</commentid>
    <comment_count>5</comment_count>
      <attachid>291982</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-10-18 15:23:58 -0700</bug_when>
    <thetext>Comment on attachment 291982
patch

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityProgressIndicator.cpp:175
&gt;&gt; +    if (!m_renderer || !m_renderer-&gt;isMeter())
&gt; 
&gt; why do we only want this on COCOA? (does COCOA also mean iOS?)

Because the localized string is in cocoa, I followed other mac only descriptions. I think it&apos;s both mac and iOS. But Meter is not currently supported on iOS. Should we wrap with platform(mac)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241645</commentid>
    <comment_count>6</comment_count>
      <attachid>291982</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-10-18 15:28:50 -0700</bug_when>
    <thetext>Comment on attachment 291982
patch

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

&gt;&gt;&gt; Source/WebCore/accessibility/AccessibilityProgressIndicator.cpp:175
&gt;&gt;&gt; +    if (!m_renderer || !m_renderer-&gt;isMeter())
&gt;&gt; 
&gt;&gt; why do we only want this on COCOA? (does COCOA also mean iOS?)
&gt; 
&gt; Because the localized string is in cocoa, I followed other mac only descriptions. I think it&apos;s both mac and iOS. But Meter is not currently supported on iOS. Should we wrap with platform(mac)?

I think the #if FEATURE(METER) flag would handle that. so maybe we use COCOA and METER

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:2620
&gt; +        if (builder.length())

is there no better way to do this? does stringBuilder have methods for this kind of scenario?

&gt; Source/WebCore/platform/LocalizedStrings.cpp:786
&gt; +    if (value == &quot;optimum&quot;)

I don&apos;t think we need to use strings here for the value. It seems like using an enum would be better. less copying required</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241709</commentid>
    <comment_count>7</comment_count>
      <attachid>291982</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-10-18 17:08:20 -0700</bug_when>
    <thetext>Comment on attachment 291982
patch

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

Will address other issues.

&gt;&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:2620
&gt;&gt; +        if (builder.length())
&gt; 
&gt; is there no better way to do this? does stringBuilder have methods for this kind of scenario?

I don&apos;t think so. I&apos;ve searched the code, we have static function shouldAddSpaceBeforeAppendingNextElement in AccessibilityNodeObject doing the length check. I think it&apos;s easier here than try to expose that function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241758</commentid>
    <comment_count>8</comment_count>
      <attachid>291982</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-10-18 18:22:45 -0700</bug_when>
    <thetext>Comment on attachment 291982
patch

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

&gt;&gt;&gt;&gt; Source/WebCore/accessibility/AccessibilityProgressIndicator.cpp:175
&gt;&gt;&gt;&gt; +    if (!m_renderer || !m_renderer-&gt;isMeter())
&gt;&gt;&gt; 
&gt;&gt;&gt; why do we only want this on COCOA? (does COCOA also mean iOS?)
&gt;&gt; 
&gt;&gt; Because the localized string is in cocoa, I followed other mac only descriptions. I think it&apos;s both mac and iOS. But Meter is not currently supported on iOS. Should we wrap with platform(mac)?
&gt; 
&gt; I think the #if FEATURE(METER) flag would handle that. so maybe we use COCOA and METER

This #if PLATFORM(COCOA) is already in the #if ENABLE(METER_ELEMENT) wrap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241775</commentid>
    <comment_count>9</comment_count>
      <attachid>292028</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-10-18 19:24:27 -0700</bug_when>
    <thetext>Created attachment 292028
patch

updated the function to take enum instead</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241859</commentid>
    <comment_count>10</comment_count>
      <attachid>292028</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-10-19 00:00:02 -0700</bug_when>
    <thetext>Comment on attachment 292028
patch

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

&gt; Source/WebCore/platform/LocalizedStrings.cpp:788
&gt; +String AXMeterGaugeRegionValueText(int value)

shouldn&apos;t int -&gt; GaugeRegion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241861</commentid>
    <comment_count>11</comment_count>
      <attachid>292028</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-10-19 00:02:59 -0700</bug_when>
    <thetext>Comment on attachment 292028
patch

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

&gt;&gt; Source/WebCore/platform/LocalizedStrings.cpp:788
&gt;&gt; +String AXMeterGaugeRegionValueText(int value)
&gt; 
&gt; shouldn&apos;t int -&gt; GaugeRegion

I tried to include HTMLMeterElement.h in LocalizedStrings.h but it always gave me file not found error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241935</commentid>
    <comment_count>12</comment_count>
      <attachid>292072</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-10-19 09:12:07 -0700</bug_when>
    <thetext>Created attachment 292072
patch

Split the function so that we don&apos;t need to deal with enum and includes in LocalizedString.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241949</commentid>
    <comment_count>13</comment_count>
      <attachid>292072</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-19 09:51:25 -0700</bug_when>
    <thetext>Comment on attachment 292072
patch

Clearing flags on attachment: 292072

Committed r207540: &lt;http://trac.webkit.org/changeset/207540&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241950</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-19 09:51:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291976</attachid>
            <date>2016-10-18 13:00:18 -0700</date>
            <delta_ts>2016-10-18 13:24:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>12109</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE2LTEwLTE4ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFtNYWNdIE1ldGVyIGVsZW1lbnQg
c2hvdWxkIHVzZSBBWFZhbHVlRGVzY3JpcHRpb24gdG8gZGVzY3JiZSB0aGUgc3RhdHVzIG9mIHRo
ZSB2YWx1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYzNjEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3NlZCB0aGUgZ29vZG5lc3Mgb2YgdGhlIG1ldGVyIHZhbHVlIGluIEFYVmFsdWVEZXNjcmlw
dGlvbi4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L21hYy9tZXRlci1nYXVnZS12YWx1
ZS1kZXNjcmlwdGlvbi5odG1sCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxl
LnN0cmluZ3M6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJ
bmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5k
aWNhdG9yOjpnYXVnZVJlZ2lvblZhbHVlRGVzY3JpcHRpb24pOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHZhbHVlRGVzY3JpcHRpb25Gb3JNZXRl
cl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6XSk6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE1ldGVyR2F1Z2VSZWdpb25WYWx1ZVRleHQpOgor
ICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaDoKKwogMjAxNi0xMC0xOCAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBDb3JyZWN0IERvY3Vt
ZW50OjpyZW1vdmVBbGxFdmVudExpc3RlbmVycwpJbmRleDogU291cmNlL1dlYkNvcmUvRW5nbGlz
aC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwkocmV2aXNpb24gMjA3NDc4KQorKysg
U291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCSh3b3JraW5n
IGNvcHkpCkBAIC04ODYsNiArODg2LDkgQEAKIC8qIEhUVFAgcmVzdWx0IGNvZGUgc3RyaW5nICov
CiAibGVuZ3RoIHJlcXVpcmVkIiA9ICJsZW5ndGggcmVxdWlyZWQiOwogCisvKiBUaGUgbGVzcyBn
b29kIHZhbHVlIGRlc2NyaXB0aW9uIGZvciBhIG1ldGVyIGVsZW1lbnQgKi8KKyJsZXNzIGdvb2Qi
ID0gImNyaXRpY2FsIHZhbHVlIjsKKwogLyogYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9u
IGZvciBsaW5rICovCiAibGluayIgPSAibGluayI7CiAKQEAgLTk3Myw2ICs5NzYsOSBAQAogLyog
YWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBhbiBvdXRwdXQgZWxlbWVudCAqLwog
Im91dHB1dCIgPSAib3V0cHV0IjsKIAorLyogVGhlIG9wdGltdW0gdmFsdWUgZGVzY3JpcHRpb24g
Zm9yIGEgbWV0ZXIgZWxlbWVudCAqLworIm9wdGltdW0iID0gIm9wdGltYWwgdmFsdWUiOworCiAv
KiBIVFRQIHJlc3VsdCBjb2RlIHN0cmluZyAqLwogInBhcnRpYWwgY29udGVudCIgPSAicGFydGlh
bCBjb250ZW50IjsKIApAQCAtMTA4MSw2ICsxMDg3LDkgQEAKIC8qIGFjY2Vzc2liaWxpdHkgaGVs
cCB0ZXh0IGZvciBoaWRlIGNsb3NlZCBjYXB0aW9ucyBidXR0b24gKi8KICJzdG9wIGRpc3BsYXlp
bmcgY2xvc2VkIGNhcHRpb25zIiA9ICJzdG9wIGRpc3BsYXlpbmcgY2xvc2VkIGNhcHRpb25zIjsK
IAorLyogVGhlIHN1Ym9wdGltYWwgdmFsdWUgZGVzY3JpcHRpb24gZm9yIGEgbWV0ZXIgZWxlbWVu
dCAqLworInN1Ym9wdGltYWwiID0gInN1Ym9wdGltYWwgdmFsdWUiOworCiAvKiBIVFRQIHJlc3Vs
dCBjb2RlIHN0cmluZyAqLwogInN1Y2Nlc3MiID0gInN1Y2Nlc3MiOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwCShyZXZpc2lvbiAyMDc0NzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2Nyw2ICsxNjcsMzUgQEAgSFRNTE1ldGVyRWxlbWVudCogQWNjZXNzaWJp
bGl0eVByb2dyZXNzSQogCiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlck1ldGVyPigqbV9yZW5k
ZXJlcikubWV0ZXJFbGVtZW50KCk7CiB9CisKK1N0cmluZyBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJ
bmRpY2F0b3I6OmdhdWdlUmVnaW9uVmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgaWYg
KCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc01ldGVyKCkpCisgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICAKKyAgICAvLyBPbmx5IGV4cG9zZSB0aGlzIHdoZW4gdGhlIGF1dGhvciBo
YXMgZXhwbGljaXRseSBzcGVjaWZpZWQgZm9sbG93aW5nIGF0dHJpYnV0ZXMuCisgICAgaWYgKCFo
YXNBdHRyaWJ1dGUobG93QXR0cikgJiYgIWhhc0F0dHJpYnV0ZShoaWdoQXR0cikgJiYgIWhhc0F0
dHJpYnV0ZShvcHRpbXVtQXR0cikpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAKKyAg
ICBTdHJpbmcgZGVzY3JpcHRpb24gPSBTdHJpbmcoKTsKKyAgICBpZiAoSFRNTE1ldGVyRWxlbWVu
dCogZWxlbWVudCA9IG1ldGVyRWxlbWVudCgpKSB7CisgICAgICAgIHN3aXRjaCAoZWxlbWVudC0+
Z2F1Z2VSZWdpb24oKSkgeworICAgICAgICBjYXNlIEhUTUxNZXRlckVsZW1lbnQ6OkdhdWdlUmVn
aW9uT3B0aW11bToKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gIm9wdGltdW0iOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSFRNTE1ldGVyRWxlbWVudDo6R2F1Z2VSZWdpb25T
dWJvcHRpbWFsOgorICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAic3Vib3B0aW1hbCI7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBIVE1MTWV0ZXJFbGVtZW50OjpHYXVnZVJlZ2lv
bkV2ZW5MZXNzR29vZDoKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gImxlc3MgZ29vZCI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiBkZXNjcmlwdGlvbjsKK30KICNlbmRp
ZgogCiBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I6OmVsZW1lbnQoKSBj
b25zdApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJv
Z3Jlc3NJbmRpY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oCShyZXZpc2lvbiAyMDc0NzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGlj
YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvcj4gY3JlYXRlKFJlbmRlclByb2dy
ZXNzKik7CiAjaWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCiAgICAgc3RhdGljIFJlZjxBY2Nlc3Np
YmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I+IGNyZWF0ZShSZW5kZXJNZXRlciopOworICAgIFN0cmlu
ZyBnYXVnZVJlZ2lvblZhbHVlRGVzY3JpcHRpb24oKSBjb25zdDsKICNlbmRpZgogICAgIEVsZW1l
bnQqIGVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtNjUsNCArNjYsNiBAQCBwcml2YXRl
OgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQUND
RVNTSUJJTElUWShBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IsIGlzUHJvZ3Jlc3NJbmRp
Y2F0b3IoKSkKKwogI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvcl9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2aXNpb24gMjA3
NDc4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3Qu
aCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0Qm94LmgiCisjaW1wb3J0ICJBY2Nlc3NpYmls
aXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgiCiAjaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5U3BpbkJ1dHRvbi5oIgpAQCAtMjYwMiw2ICsyNjAzLDI4IEBAIC0gKGlkKXNjcm9s
bFZpZXdQYXJlbnQKICAgICByZXR1cm4gW3NlbGYgcmVtb3RlQWNjZXNzaWJpbGl0eVBhcmVudE9i
amVjdF07CiB9CiAKKy0gKE5TU3RyaW5nICopdmFsdWVEZXNjcmlwdGlvbkZvck1ldGVyCit7Cisg
ICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBTdHJpbmcg
dmFsdWVEZXNjcmlwdGlvbiA9IG1fb2JqZWN0LT52YWx1ZURlc2NyaXB0aW9uKCk7CisgICAgaWYg
KCFpczxBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I+KG1fb2JqZWN0KSkKKyAgICAgICAg
cmV0dXJuIHZhbHVlRGVzY3JpcHRpb247CisgICAgCisgICAgYXV0byAmbWV0ZXIgPSBkb3duY2Fz
dDxBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I+KCptX29iamVjdCk7CisgICAgU3RyaW5n
IG9wdGltdW1WYWx1ZSA9IG1ldGVyLmdhdWdlUmVnaW9uVmFsdWVEZXNjcmlwdGlvbigpOworICAg
IGlmIChvcHRpbXVtVmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdmFsdWVEZXNjcmlw
dGlvbjsKKyAgICAKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBl
bmQodmFsdWVEZXNjcmlwdGlvbik7CisgICAgaWYgKGJ1aWxkZXIubGVuZ3RoKCkpCisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChBWE1ldGVy
R2F1Z2VSZWdpb25WYWx1ZVRleHQob3B0aW11bVZhbHVlKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKK30KKwogLy8gRklYTUU6IHNwbGl0IHVwIHRoaXMgZnVuY3Rpb24gaW4gYSBi
ZXR0ZXIgd2F5LgogLy8gc3VnZ2VzdGlvbnM6IFVzZSBhIGhhc2ggdGFibGUgdGhhdCBtYXBzIGF0
dHJpYnV0ZSBuYW1lcyB0byBmdW5jdGlvbiBjYWxscywKIC8vIG9yIG1heWJlIHBvaW50ZXJzIHRv
IG1lbWJlciBmdW5jdGlvbnMKQEAgLTMxOTksOCArMzIyMiwxMSBAQCAtIChpZClhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogICAg
IAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0ZV0pCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWYWx1ZURlc2NyaXB0aW9uQXR0cmlidXRlXSkgewor
ICAgICAgICBpZiAobV9vYmplY3QtPmlzTWV0ZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBbc2Vs
ZiB2YWx1ZURlc2NyaXB0aW9uRm9yTWV0ZXJdOwogICAgICAgICByZXR1cm4gbV9vYmplY3QtPnZh
bHVlRGVzY3JpcHRpb24oKTsKKyAgICB9CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV0pIHsKICAg
ICAgICAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIGVsZW1lbnRPcmllbnRhdGlvbiA9IG1fb2Jq
ZWN0LT5vcmllbnRhdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxp
emVkU3RyaW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5jcHAJKHJldmlzaW9uIDIwNzQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODAsNiArNzgw
LDE3IEBAIFN0cmluZyBBWEhvcml6b250YWxSdWxlRGVzY3JpcHRpb25UZXh0KCkKIHsKICAgICBy
ZXR1cm4gV0VCX1VJX1NUUklORygic2VwYXJhdG9yIiwgImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNj
cmlwdGlvbiBmb3IgYSBob3Jpem9udGFsIHJ1bGUgWzxocj5dIik7CiB9CisKK1N0cmluZyBBWE1l
dGVyR2F1Z2VSZWdpb25WYWx1ZVRleHQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAo
dmFsdWUgPT0gIm9wdGltdW0iKQorICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklORygib3B0aW11
bSIsICJUaGUgb3B0aW11bSB2YWx1ZSBkZXNjcmlwdGlvbiBmb3IgYSBtZXRlciBlbGVtZW50LiIp
OworICAgIGlmICh2YWx1ZSA9PSAic3Vib3B0aW1hbCIpCisgICAgICAgIHJldHVybiBXRUJfVUlf
U1RSSU5HKCJzdWJvcHRpbWFsIiwgIlRoZSBzdWJvcHRpbWFsIHZhbHVlIGRlc2NyaXB0aW9uIGZv
ciBhIG1ldGVyIGVsZW1lbnQuIik7CisgICAgaWYgKHZhbHVlID09ICJsZXNzIGdvb2QiKQorICAg
ICAgICByZXR1cm4gV0VCX1VJX1NUUklORygibGVzcyBnb29kIiwgIlRoZSBsZXNzIGdvb2QgdmFs
dWUgZGVzY3JpcHRpb24gZm9yIGEgbWV0ZXIgZWxlbWVudC4iKTsKKyAgICByZXR1cm4gU3RyaW5n
KCk7Cit9CiAgICAgCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgJKHJldmlzaW9uIDIwNzQ3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAkod29ya2luZyBjb3B5
KQpAQCAtMTk2LDYgKzE5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBTdHJpbmcgQVhBUklBQ29udGVudEdyb3VwVGV4dChjb25zdCBTdHJpbmcmIGFy
aWFUeXBlKTsKICAgICBTdHJpbmcgQVhIb3Jpem9udGFsUnVsZURlc2NyaXB0aW9uVGV4dCgpOwor
ICAgIFN0cmluZyBBWE1ldGVyR2F1Z2VSZWdpb25WYWx1ZVRleHQoY29uc3QgU3RyaW5nJiB2YWx1
ZSk7CiAjZW5kaWYKICAgICAKICAgICBTdHJpbmcgQVhBdXRvRmlsbENyZWRlbnRpYWxzTGFiZWwo
KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzQ3OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTEwLTE4ICBOYW4gV2FuZyAgPG5f
d2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFtNYWNdIE1ldGVyIGVsZW1lbnQgc2hvdWxk
IHVzZSBBWFZhbHVlRGVzY3JpcHRpb24gdG8gZGVzY3JiZSB0aGUgc3RhdHVzIG9mIHRoZSB2YWx1
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNjEw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L21hYy9tZXRlci1nYXVnZS12YWx1ZS1kZXNjcmlwdGlvbi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL21ldGVyLWdhdWdlLXZhbHVlLWRl
c2NyaXB0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDE2LTEwLTE4ICBSeWFuIEhhZGRhZCAgPHJ5YW5o
YWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBmbGFreSBleHBlY3RhdGlvbiBmb3IgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvbGF0Y2hlZC1kaXYtd2l0aC1zY3JvbGwtc25hcC5odG1sIHRo
YXQgd2FzIGVycmFudGx5IHJlbW92ZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9tZXRlci1nYXVnZS12YWx1ZS1kZXNjcmlwdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvbWV0ZXItZ2F1Z2UtdmFsdWUtZGVz
Y3JpcHRpb24tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL21ldGVyLWdhdWdlLXZhbHVlLWRlc2NyaXB0aW9uLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACisgICAgCitUaGlzIHRlc3RzIHRoZSBnYXVn
ZSB2YWx1ZSBkZXNjcmlwdGlvbiBmb3IgbWV0ZXIgZWxlbWVudHMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIG1ldGVyMS52YWx1ZURlc2NyaXB0aW9uIGlzICdBWFZhbHVl
RGVzY3JpcHRpb246ICcKK1BBU1MgbWV0ZXIyLnZhbHVlRGVzY3JpcHRpb24gaXMgJ0FYVmFsdWVE
ZXNjcmlwdGlvbjogc3Vib3B0aW1hbCB2YWx1ZScKK1BBU1MgbWV0ZXIzLnZhbHVlRGVzY3JpcHRp
b24gaXMgJ0FYVmFsdWVEZXNjcmlwdGlvbjogb3B0aW1hbCB2YWx1ZScKK1BBU1MgbWV0ZXI0LnZh
bHVlRGVzY3JpcHRpb24gaXMgJ0FYVmFsdWVEZXNjcmlwdGlvbjogY3JpdGljYWwgdmFsdWUnCitQ
QVNTIG1ldGVyNS52YWx1ZURlc2NyaXB0aW9uIGlzICdBWFZhbHVlRGVzY3JpcHRpb246IDUwIGhv
dXJzLCBvcHRpbWFsIHZhbHVlJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL21ldGVy
LWdhdWdlLXZhbHVlLWRlc2NyaXB0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvbWV0ZXItZ2F1Z2UtdmFsdWUtZGVzY3JpcHRpb24uaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9tZXRlci1nYXVnZS12
YWx1ZS1kZXNjcmlwdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKworPG1ldGVyIGlkPSJtZXRlciIgdmFsdWU9
IjgzLjUiPjwvbWV0ZXI+Cis8bWV0ZXIgaWQ9Im1ldGVyMiIgdmFsdWU9IjUiIG9wdGltdW09IjUw
IiBtaW49IjAiIG1heD0iMTAwIiBsb3c9IjEwIiBoaWdoPSI4MCI+PC9tZXRlcj4KKzxtZXRlciBp
ZD0ibWV0ZXIzIiB2YWx1ZT0iNTAiIG9wdGltdW09IjUwIiBtaW49IjAiIG1heD0iMTAwIiBsb3c9
IjEwIiBoaWdoPSI4MCI+PC9tZXRlcj4KKzxtZXRlciBpZD0ibWV0ZXI0IiB2YWx1ZT0iOTAiIG9w
dGltdW09IjIwIiBtaW49IjAiIG1heD0iMTAwIiBsb3c9IjUwIiBoaWdoPSI4MCI+PC9tZXRlcj4K
KzxtZXRlciBpZD0ibWV0ZXI1IiB2YWx1ZT0iNTAiIG9wdGltdW09IjUwIiBtaW49IjAiIG1heD0i
MTAwIiBsb3c9IjEwIiBoaWdoPSI4MCI+NTAgaG91cnM8L21ldGVyPgorCis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorICAgIGRl
c2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBnYXVnZSB2YWx1ZSBkZXNjcmlwdGlvbiBmb3IgbWV0
ZXIgZWxlbWVudHMuIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7CisKKyAgICAgICAgICAvLyBUZXN0IHRoYXQgd2UgYXJlIG5vdCBleHBvc2luZyB0aGUgZ2F1
Z2UgdmFsdWUgZGVzY3JpcHRpb24gaWYgYXV0aG9yIAorICAgICAgICAgIC8vIGRpZG4ndCBzcGVj
aWZ5IGxvdywgaGlnaCBvciBvcHRpbXVtIGF0dHJpYnV0ZS4KKyAgICAgICAgICB2YXIgbWV0ZXIx
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtZXRlciIp
OworICAgICAgICAgIHNob3VsZEJlKCJtZXRlcjEudmFsdWVEZXNjcmlwdGlvbiIsICInQVhWYWx1
ZURlc2NyaXB0aW9uOiAnIik7CisKKyAgICAgICAgICB2YXIgbWV0ZXIyID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtZXRlcjIiKTsKKyAgICAgICAgICBz
aG91bGRCZSgibWV0ZXIyLnZhbHVlRGVzY3JpcHRpb24iLCAiJ0FYVmFsdWVEZXNjcmlwdGlvbjog
c3Vib3B0aW1hbCB2YWx1ZSciKTsKKyAgICAgICAgICAKKyAgICAgICAgICB2YXIgbWV0ZXIzID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtZXRlcjMiKTsK
KyAgICAgICAgICBzaG91bGRCZSgibWV0ZXIzLnZhbHVlRGVzY3JpcHRpb24iLCAiJ0FYVmFsdWVE
ZXNjcmlwdGlvbjogb3B0aW1hbCB2YWx1ZSciKTsKKyAgICAgICAgICAKKyAgICAgICAgICB2YXIg
bWV0ZXI0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJt
ZXRlcjQiKTsKKyAgICAgICAgICBzaG91bGRCZSgibWV0ZXI0LnZhbHVlRGVzY3JpcHRpb24iLCAi
J0FYVmFsdWVEZXNjcmlwdGlvbjogY3JpdGljYWwgdmFsdWUnIik7CisgICAgICAgICAgCisgICAg
ICAgICAgLy8gVGVzdCBtZXRlciB3aXRoIGlubmVyIHRleHQuCisgICAgICAgICAgdmFyIG1ldGVy
NSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibWV0ZXI1
Iik7CisgICAgICAgICAgc2hvdWxkQmUoIm1ldGVyNS52YWx1ZURlc2NyaXB0aW9uIiwgIidBWFZh
bHVlRGVzY3JpcHRpb246IDUwIGhvdXJzLCBvcHRpbWFsIHZhbHVlJyIpOworICAgIH0KKzwvc2Ny
aXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291982</attachid>
            <date>2016-10-18 13:54:53 -0700</date>
            <delta_ts>2016-10-18 19:24:27 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>12635</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzQ4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE2LTEwLTE4ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFtNYWNdIE1ldGVyIGVsZW1lbnQg
c2hvdWxkIHVzZSBBWFZhbHVlRGVzY3JpcHRpb24gdG8gZGVzY3JiZSB0aGUgc3RhdHVzIG9mIHRo
ZSB2YWx1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYzNjEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3NlZCB0aGUgZ29vZG5lc3Mgb2YgdGhlIG1ldGVyIHZhbHVlIGluIEFYVmFsdWVEZXNjcmlw
dGlvbi4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L21hYy9tZXRlci1nYXVnZS12YWx1
ZS1kZXNjcmlwdGlvbi5odG1sCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxl
LnN0cmluZ3M6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJ
bmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5k
aWNhdG9yOjpnYXVnZVJlZ2lvblZhbHVlRGVzY3JpcHRpb24pOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHZhbHVlRGVzY3JpcHRpb25Gb3JNZXRl
cl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6XSk6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE1ldGVyR2F1Z2VSZWdpb25WYWx1ZVRleHQpOgor
ICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaDoKKwogMjAxNi0xMC0xOCAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjAx
NDcxKTogS2V5Ym9hcmQgcmVtYWlucyB2aXNpYmxlIHdoZW4gc3dpcGluZyBiYWNrIG9uIHR3aXR0
ZXIuY29tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0
cmluZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6
YWJsZS5zdHJpbmdzCShyZXZpc2lvbiAyMDc0NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9FbmdsaXNo
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MJKHdvcmtpbmcgY29weSkKQEAgLTg4Niw2ICs4ODYs
OSBAQAogLyogSFRUUCByZXN1bHQgY29kZSBzdHJpbmcgKi8KICJsZW5ndGggcmVxdWlyZWQiID0g
Imxlbmd0aCByZXF1aXJlZCI7CiAKKy8qIFRoZSBsZXNzIGdvb2QgdmFsdWUgZGVzY3JpcHRpb24g
Zm9yIGEgbWV0ZXIgZWxlbWVudCAqLworImxlc3MgZ29vZCIgPSAiY3JpdGljYWwgdmFsdWUiOwor
CiAvKiBhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGxpbmsgKi8KICJsaW5rIiA9
ICJsaW5rIjsKIApAQCAtOTczLDYgKzk3Niw5IEBACiAvKiBhY2Nlc3NpYmlsaXR5IHJvbGUgZGVz
Y3JpcHRpb24gZm9yIGFuIG91dHB1dCBlbGVtZW50ICovCiAib3V0cHV0IiA9ICJvdXRwdXQiOwog
CisvKiBUaGUgb3B0aW11bSB2YWx1ZSBkZXNjcmlwdGlvbiBmb3IgYSBtZXRlciBlbGVtZW50ICov
Cisib3B0aW11bSIgPSAib3B0aW1hbCB2YWx1ZSI7CisKIC8qIEhUVFAgcmVzdWx0IGNvZGUgc3Ry
aW5nICovCiAicGFydGlhbCBjb250ZW50IiA9ICJwYXJ0aWFsIGNvbnRlbnQiOwogCkBAIC0xMDgx
LDYgKzEwODcsOSBAQAogLyogYWNjZXNzaWJpbGl0eSBoZWxwIHRleHQgZm9yIGhpZGUgY2xvc2Vk
IGNhcHRpb25zIGJ1dHRvbiAqLwogInN0b3AgZGlzcGxheWluZyBjbG9zZWQgY2FwdGlvbnMiID0g
InN0b3AgZGlzcGxheWluZyBjbG9zZWQgY2FwdGlvbnMiOwogCisvKiBUaGUgc3Vib3B0aW1hbCB2
YWx1ZSBkZXNjcmlwdGlvbiBmb3IgYSBtZXRlciBlbGVtZW50ICovCisic3Vib3B0aW1hbCIgPSAi
c3Vib3B0aW1hbCB2YWx1ZSI7CisKIC8qIEhUVFAgcmVzdWx0IGNvZGUgc3RyaW5nICovCiAic3Vj
Y2VzcyIgPSAic3VjY2VzcyI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAJ
KHJldmlzaW9uIDIwNzQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgIkhUTUxNZXRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50LmgiCisjaW5jbHVkZSAiTG9jYWxpemVk
U3RyaW5ncy5oIgogI2luY2x1ZGUgIlJlbmRlck1ldGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyUHJvZ3Jlc3MuaCIKQEAgLTE2Nyw2ICsxNjgsMzIgQEAg
SFRNTE1ldGVyRWxlbWVudCogQWNjZXNzaWJpbGl0eVByb2dyZXNzSQogCiAgICAgcmV0dXJuIGRv
d25jYXN0PFJlbmRlck1ldGVyPigqbV9yZW5kZXJlcikubWV0ZXJFbGVtZW50KCk7CiB9CisKK1N0
cmluZyBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I6OmdhdWdlUmVnaW9uVmFsdWVEZXNj
cmlwdGlvbigpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKCFtX3JlbmRl
cmVyIHx8ICFtX3JlbmRlcmVyLT5pc01ldGVyKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KyAgICAKKyAgICAvLyBPbmx5IGV4cG9zZSB0aGlzIHdoZW4gdGhlIGF1dGhvciBoYXMgZXhwbGlj
aXRseSBzcGVjaWZpZWQgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzLgorICAgIGlmICghaGFzQXR0
cmlidXRlKGxvd0F0dHIpICYmICFoYXNBdHRyaWJ1dGUoaGlnaEF0dHIpICYmICFoYXNBdHRyaWJ1
dGUob3B0aW11bUF0dHIpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgCisgICAgaWYg
KEhUTUxNZXRlckVsZW1lbnQqIGVsZW1lbnQgPSBtZXRlckVsZW1lbnQoKSkgeworICAgICAgICBz
d2l0Y2ggKGVsZW1lbnQtPmdhdWdlUmVnaW9uKCkpIHsKKyAgICAgICAgY2FzZSBIVE1MTWV0ZXJF
bGVtZW50OjpHYXVnZVJlZ2lvbk9wdGltdW06CisgICAgICAgICAgICByZXR1cm4gQVhNZXRlckdh
dWdlUmVnaW9uVmFsdWVUZXh0KCJvcHRpbXVtIik7CisgICAgICAgIGNhc2UgSFRNTE1ldGVyRWxl
bWVudDo6R2F1Z2VSZWdpb25TdWJvcHRpbWFsOgorICAgICAgICAgICAgcmV0dXJuIEFYTWV0ZXJH
YXVnZVJlZ2lvblZhbHVlVGV4dCgic3Vib3B0aW1hbCIpOworICAgICAgICBjYXNlIEhUTUxNZXRl
ckVsZW1lbnQ6OkdhdWdlUmVnaW9uRXZlbkxlc3NHb29kOgorICAgICAgICAgICAgcmV0dXJuIEFY
TWV0ZXJHYXVnZVJlZ2lvblZhbHVlVGV4dCgibGVzcyBnb29kIik7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorICAgIHJldHVy
biBTdHJpbmcoKTsKK30KICNlbmRpZgogCiBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJ
bmRpY2F0b3I6OmVsZW1lbnQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5o
CShyZXZpc2lvbiAyMDc0NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRv
cj4gY3JlYXRlKFJlbmRlclByb2dyZXNzKik7CiAjaWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCiAg
ICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I+IGNyZWF0ZShSZW5k
ZXJNZXRlciopOworICAgIFN0cmluZyBnYXVnZVJlZ2lvblZhbHVlRGVzY3JpcHRpb24oKSBjb25z
dDsKICNlbmRpZgogICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKIApAQCAt
NjUsNCArNjYsNiBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQUNDRVNTSUJJTElUWShBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRp
Y2F0b3IsIGlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSkKKwogI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlQ
cm9ncmVzc0luZGljYXRvcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQkocmV2aXNpb24gMjA3NDc4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5oIgogI2ltcG9y
dCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0Qm94Lmgi
CisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCIKICNpbXBvcnQgIkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oIgpAQCAtNzYsNyArNzcs
NyBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiaHRtbGVk
aXRpbmcuaCIKICNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgotI2lmIEVOQUJMRShU
UkVFX0RFQlVHR0lORykKKyNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpIHx8IEVOQUJMRShNRVRF
Ul9FTEVNRU5UKQogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2VuZGlmCiAK
QEAgLTI2MDIsNiArMjYwMywyOSBAQCAtIChpZClzY3JvbGxWaWV3UGFyZW50CiAgICAgcmV0dXJu
IFtzZWxmIHJlbW90ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmplY3RdOwogfQogCistIChOU1N0cmlu
ZyAqKXZhbHVlRGVzY3JpcHRpb25Gb3JNZXRlcgoreworICAgIGlmICghbV9vYmplY3QpCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgCisgICAgU3RyaW5nIHZhbHVlRGVzY3JpcHRpb24gPSBtX29i
amVjdC0+dmFsdWVEZXNjcmlwdGlvbigpOworI2lmIEVOQUJMRShNRVRFUl9FTEVNRU5UKQorICAg
IGlmICghaXM8QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yPihtX29iamVjdCkpCisgICAg
ICAgIHJldHVybiB2YWx1ZURlc2NyaXB0aW9uOworICAgIGF1dG8gJm1ldGVyID0gZG93bmNhc3Q8
QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yPigqbV9vYmplY3QpOworICAgIFN0cmluZyBn
YXVnZVJlZ2lvblZhbHVlID0gbWV0ZXIuZ2F1Z2VSZWdpb25WYWx1ZURlc2NyaXB0aW9uKCk7Cisg
ICAgaWYgKCFnYXVnZVJlZ2lvblZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlRGVzY3JpcHRpb24pOwor
ICAgICAgICBpZiAoYnVpbGRlci5sZW5ndGgoKSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoZ2F1Z2VSZWdpb25WYWx1ZSk7
CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfQorI2VuZGlmCisgICAg
cmV0dXJuIHZhbHVlRGVzY3JpcHRpb247Cit9CisKIC8vIEZJWE1FOiBzcGxpdCB1cCB0aGlzIGZ1
bmN0aW9uIGluIGEgYmV0dGVyIHdheS4KIC8vIHN1Z2dlc3Rpb25zOiBVc2UgYSBoYXNoIHRhYmxl
IHRoYXQgbWFwcyBhdHRyaWJ1dGUgbmFtZXMgdG8gZnVuY3Rpb24gY2FsbHMsCiAvLyBvciBtYXli
ZSBwb2ludGVycyB0byBtZW1iZXIgZnVuY3Rpb25zCkBAIC0zMTk5LDggKzMyMjMsMTEgQEAgLSAo
aWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cgogICAgICAgICByZXR1cm4gbmls
OwogICAgIH0KICAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eVZhbHVlRGVzY3JpcHRpb25BdHRyaWJ1dGVdKQorICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmFsdWVEZXNjcmlwdGlvbkF0
dHJpYnV0ZV0pIHsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01ldGVyKCkpCisgICAgICAgICAg
ICByZXR1cm4gW3NlbGYgdmFsdWVEZXNjcmlwdGlvbkZvck1ldGVyXTsKICAgICAgICAgcmV0dXJu
IG1fb2JqZWN0LT52YWx1ZURlc2NyaXB0aW9uKCk7CisgICAgfQogICAgIAogICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRy
aWJ1dGVdKSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBlbGVtZW50T3JpZW50
YXRpb24gPSBtX29iamVjdC0+b3JpZW50YXRpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCShyZXZpc2lvbiAyMDc0NzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzgwLDYgKzc4MCwxNyBAQCBTdHJpbmcgQVhIb3Jpem9udGFsUnVsZURlc2NyaXB0aW9uVGV4
dCgpCiB7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoInNlcGFyYXRvciIsICJhY2Nlc3NpYmls
aXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGEgaG9yaXpvbnRhbCBydWxlIFs8aHI+XSIpOwogfQor
CitTdHJpbmcgQVhNZXRlckdhdWdlUmVnaW9uVmFsdWVUZXh0KGNvbnN0IFN0cmluZyYgdmFsdWUp
Cit7CisgICAgaWYgKHZhbHVlID09ICJvcHRpbXVtIikKKyAgICAgICAgcmV0dXJuIFdFQl9VSV9T
VFJJTkcoIm9wdGltdW0iLCAiVGhlIG9wdGltdW0gdmFsdWUgZGVzY3JpcHRpb24gZm9yIGEgbWV0
ZXIgZWxlbWVudC4iKTsKKyAgICBpZiAodmFsdWUgPT0gInN1Ym9wdGltYWwiKQorICAgICAgICBy
ZXR1cm4gV0VCX1VJX1NUUklORygic3Vib3B0aW1hbCIsICJUaGUgc3Vib3B0aW1hbCB2YWx1ZSBk
ZXNjcmlwdGlvbiBmb3IgYSBtZXRlciBlbGVtZW50LiIpOworICAgIGlmICh2YWx1ZSA9PSAibGVz
cyBnb29kIikKKyAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoImxlc3MgZ29vZCIsICJUaGUg
bGVzcyBnb29kIHZhbHVlIGRlc2NyaXB0aW9uIGZvciBhIG1ldGVyIGVsZW1lbnQuIik7CisgICAg
cmV0dXJuIFN0cmluZygpOworfQogICAgIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCShyZXZpc2lv
biAyMDc0NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU3RyaW5nIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoY29u
c3QgU3RyaW5nJiBhcmlhVHlwZSk7CiAgICAgU3RyaW5nIEFYSG9yaXpvbnRhbFJ1bGVEZXNjcmlw
dGlvblRleHQoKTsKKyAgICBTdHJpbmcgQVhNZXRlckdhdWdlUmVnaW9uVmFsdWVUZXh0KGNvbnN0
IFN0cmluZyYgdmFsdWUpOwogI2VuZGlmCiAgICAgCiAgICAgU3RyaW5nIEFYQXV0b0ZpbGxDcmVk
ZW50aWFsc0xhYmVsKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDc0NzgpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMC0xOCAg
TmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBbTWFjXSBNZXRlciBl
bGVtZW50IHNob3VsZCB1c2UgQVhWYWx1ZURlc2NyaXB0aW9uIHRvIGRlc2NyYmUgdGhlIHN0YXR1
cyBvZiB0aGUgdmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzYxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvbWV0ZXItZ2F1Z2UtdmFsdWUtZGVzY3JpcHRpb24t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9tZXRlci1n
YXVnZS12YWx1ZS1kZXNjcmlwdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxNi0xMC0xOCAgUnlhbiBI
YWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZmxha3kgZXhwZWN0
YXRpb24gZm9yIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2xhdGNoZWQtZGl2LXdpdGgtc2Nyb2xs
LXNuYXAuaHRtbCB0aGF0IHdhcyBlcnJhbnRseSByZW1vdmVkLgpJbmRleDogTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvbWV0ZXItZ2F1Z2UtdmFsdWUtZGVzY3JpcHRpb24tZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL21ldGVyLWdh
dWdlLXZhbHVlLWRlc2NyaXB0aW9uLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9tZXRlci1nYXVnZS12YWx1ZS1kZXNjcmlwdGlvbi1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNSBAQAorICAgIAorVGhpcyB0
ZXN0cyB0aGUgZ2F1Z2UgdmFsdWUgZGVzY3JpcHRpb24gZm9yIG1ldGVyIGVsZW1lbnRzLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBtZXRlcjEudmFsdWVEZXNjcmlwdGlv
biBpcyAnQVhWYWx1ZURlc2NyaXB0aW9uOiAnCitQQVNTIG1ldGVyMi52YWx1ZURlc2NyaXB0aW9u
IGlzICdBWFZhbHVlRGVzY3JpcHRpb246IHN1Ym9wdGltYWwgdmFsdWUnCitQQVNTIG1ldGVyMy52
YWx1ZURlc2NyaXB0aW9uIGlzICdBWFZhbHVlRGVzY3JpcHRpb246IG9wdGltYWwgdmFsdWUnCitQ
QVNTIG1ldGVyNC52YWx1ZURlc2NyaXB0aW9uIGlzICdBWFZhbHVlRGVzY3JpcHRpb246IGNyaXRp
Y2FsIHZhbHVlJworUEFTUyBtZXRlcjUudmFsdWVEZXNjcmlwdGlvbiBpcyAnQVhWYWx1ZURlc2Ny
aXB0aW9uOiA1MCBob3Vycywgb3B0aW1hbCB2YWx1ZScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9tZXRlci1nYXVnZS12YWx1ZS1kZXNjcmlwdGlvbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL21ldGVyLWdhdWdlLXZhbHVlLWRlc2NyaXB0
aW9uLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
bWV0ZXItZ2F1Z2UtdmFsdWUtZGVzY3JpcHRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKzxtZXRlciBpZD0i
bWV0ZXIiIHZhbHVlPSI4My41Ij48L21ldGVyPgorPG1ldGVyIGlkPSJtZXRlcjIiIHZhbHVlPSI1
IiBvcHRpbXVtPSI1MCIgbWluPSIwIiBtYXg9IjEwMCIgbG93PSIxMCIgaGlnaD0iODAiPjwvbWV0
ZXI+Cis8bWV0ZXIgaWQ9Im1ldGVyMyIgdmFsdWU9IjUwIiBvcHRpbXVtPSI1MCIgbWluPSIwIiBt
YXg9IjEwMCIgbG93PSIxMCIgaGlnaD0iODAiPjwvbWV0ZXI+Cis8bWV0ZXIgaWQ9Im1ldGVyNCIg
dmFsdWU9IjkwIiBvcHRpbXVtPSIyMCIgbWluPSIwIiBtYXg9IjEwMCIgbG93PSI1MCIgaGlnaD0i
ODAiPjwvbWV0ZXI+Cis8bWV0ZXIgaWQ9Im1ldGVyNSIgdmFsdWU9IjUwIiBvcHRpbXVtPSI1MCIg
bWluPSIwIiBtYXg9IjEwMCIgbG93PSIxMCIgaGlnaD0iODAiPjUwIGhvdXJzPC9tZXRlcj4KKwor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNj
cmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgZ2F1Z2UgdmFsdWUgZGVzY3Jp
cHRpb24gZm9yIG1ldGVyIGVsZW1lbnRzLiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworCisgICAgICAgICAgLy8gVGVzdCB0aGF0IHdlIGFyZSBub3QgZXhw
b3NpbmcgdGhlIGdhdWdlIHZhbHVlIGRlc2NyaXB0aW9uIGlmIGF1dGhvciAKKyAgICAgICAgICAv
LyBkaWRuJ3Qgc3BlY2lmeSBsb3csIGhpZ2ggb3Igb3B0aW11bSBhdHRyaWJ1dGUuCisgICAgICAg
ICAgdmFyIG1ldGVyMSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgibWV0ZXIiKTsKKyAgICAgICAgICBzaG91bGRCZSgibWV0ZXIxLnZhbHVlRGVzY3JpcHRp
b24iLCAiJ0FYVmFsdWVEZXNjcmlwdGlvbjogJyIpOworCisgICAgICAgICAgdmFyIG1ldGVyMiA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibWV0ZXIyIik7
CisgICAgICAgICAgc2hvdWxkQmUoIm1ldGVyMi52YWx1ZURlc2NyaXB0aW9uIiwgIidBWFZhbHVl
RGVzY3JpcHRpb246IHN1Ym9wdGltYWwgdmFsdWUnIik7CisgICAgICAgICAgCisgICAgICAgICAg
dmFyIG1ldGVyMyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgibWV0ZXIzIik7CisgICAgICAgICAgc2hvdWxkQmUoIm1ldGVyMy52YWx1ZURlc2NyaXB0aW9u
IiwgIidBWFZhbHVlRGVzY3JpcHRpb246IG9wdGltYWwgdmFsdWUnIik7CisgICAgICAgICAgCisg
ICAgICAgICAgdmFyIG1ldGVyNCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgibWV0ZXI0Iik7CisgICAgICAgICAgc2hvdWxkQmUoIm1ldGVyNC52YWx1ZURl
c2NyaXB0aW9uIiwgIidBWFZhbHVlRGVzY3JpcHRpb246IGNyaXRpY2FsIHZhbHVlJyIpOworICAg
ICAgICAgIAorICAgICAgICAgIC8vIFRlc3QgbWV0ZXIgd2l0aCBpbm5lciB0ZXh0LgorICAgICAg
ICAgIHZhciBtZXRlcjUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoIm1ldGVyNSIpOworICAgICAgICAgIHNob3VsZEJlKCJtZXRlcjUudmFsdWVEZXNjcmlw
dGlvbiIsICInQVhWYWx1ZURlc2NyaXB0aW9uOiA1MCBob3Vycywgb3B0aW1hbCB2YWx1ZSciKTsK
KyAgICB9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292028</attachid>
            <date>2016-10-18 19:24:27 -0700</date>
            <delta_ts>2016-10-19 09:12:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>12644</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE2LTEwLTE4ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFtNYWNdIE1ldGVyIGVsZW1lbnQg
c2hvdWxkIHVzZSBBWFZhbHVlRGVzY3JpcHRpb24gdG8gZGVzY3JiZSB0aGUgc3RhdHVzIG9mIHRo
ZSB2YWx1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYzNjEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3NlZCB0aGUgZ29vZG5lc3Mgb2YgdGhlIG1ldGVyIHZhbHVlIGluIEFYVmFsdWVEZXNjcmlw
dGlvbi4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L21hYy9tZXRlci1nYXVnZS12YWx1
ZS1kZXNjcmlwdGlvbi5odG1sCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxl
LnN0cmluZ3M6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJ
bmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5k
aWNhdG9yOjpnYXVnZVJlZ2lvblZhbHVlRGVzY3JpcHRpb24pOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHZhbHVlRGVzY3JpcHRpb25Gb3JNZXRl
cl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6XSk6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE1ldGVyR2F1Z2VSZWdpb25WYWx1ZVRleHQpOgor
ICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaDoKKwogMjAxNi0xMC0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5naW5nIGRldGFpbHMu
b3BlbiBzaG91bGQgY2F1c2UgYSB0b2dnbGUgZXZlbnQgdG8gYmUgZmlyZWQgYXN5bmNocm9ub3Vz
bHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5n
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxl
LnN0cmluZ3MJKHJldmlzaW9uIDIwNzQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHBy
b2ovTG9jYWxpemFibGUuc3RyaW5ncwkod29ya2luZyBjb3B5KQpAQCAtODg2LDYgKzg4Niw5IEBA
CiAvKiBIVFRQIHJlc3VsdCBjb2RlIHN0cmluZyAqLwogImxlbmd0aCByZXF1aXJlZCIgPSAibGVu
Z3RoIHJlcXVpcmVkIjsKIAorLyogVGhlIGxlc3MgZ29vZCB2YWx1ZSBkZXNjcmlwdGlvbiBmb3Ig
YSBtZXRlciBlbGVtZW50ICovCisibGVzcyBnb29kIiA9ICJjcml0aWNhbCB2YWx1ZSI7CisKIC8q
IGFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgbGluayAqLwogImxpbmsiID0gImxp
bmsiOwogCkBAIC05NzMsNiArOTc2LDkgQEAKIC8qIGFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlw
dGlvbiBmb3IgYW4gb3V0cHV0IGVsZW1lbnQgKi8KICJvdXRwdXQiID0gIm91dHB1dCI7CiAKKy8q
IFRoZSBvcHRpbXVtIHZhbHVlIGRlc2NyaXB0aW9uIGZvciBhIG1ldGVyIGVsZW1lbnQgKi8KKyJv
cHRpbXVtIiA9ICJvcHRpbWFsIHZhbHVlIjsKKwogLyogSFRUUCByZXN1bHQgY29kZSBzdHJpbmcg
Ki8KICJwYXJ0aWFsIGNvbnRlbnQiID0gInBhcnRpYWwgY29udGVudCI7CiAKQEAgLTEwODEsNiAr
MTA4Nyw5IEBACiAvKiBhY2Nlc3NpYmlsaXR5IGhlbHAgdGV4dCBmb3IgaGlkZSBjbG9zZWQgY2Fw
dGlvbnMgYnV0dG9uICovCiAic3RvcCBkaXNwbGF5aW5nIGNsb3NlZCBjYXB0aW9ucyIgPSAic3Rv
cCBkaXNwbGF5aW5nIGNsb3NlZCBjYXB0aW9ucyI7CiAKKy8qIFRoZSBzdWJvcHRpbWFsIHZhbHVl
IGRlc2NyaXB0aW9uIGZvciBhIG1ldGVyIGVsZW1lbnQgKi8KKyJzdWJvcHRpbWFsIiA9ICJzdWJv
cHRpbWFsIHZhbHVlIjsKKwogLyogSFRUUCByZXN1bHQgY29kZSBzdHJpbmcgKi8KICJzdWNjZXNz
IiA9ICJzdWNjZXNzIjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcAkocmV2
aXNpb24gMjA3NDc4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiSFRNTE1ldGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgIkhUTUxQcm9ncmVzc0VsZW1lbnQuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJp
bmdzLmgiCiAjaW5jbHVkZSAiUmVuZGVyTWV0ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJQcm9ncmVzcy5oIgpAQCAtMTY3LDYgKzE2OCwyMiBAQCBIVE1M
TWV0ZXJFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJCiAKICAgICByZXR1cm4gZG93bmNh
c3Q8UmVuZGVyTWV0ZXI+KCptX3JlbmRlcmVyKS5tZXRlckVsZW1lbnQoKTsKIH0KKworU3RyaW5n
IEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvcjo6Z2F1Z2VSZWdpb25WYWx1ZURlc2NyaXB0
aW9uKCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAoIW1fcmVuZGVyZXIg
fHwgIW1fcmVuZGVyZXItPmlzTWV0ZXIoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAg
IAorICAgIC8vIE9ubHkgZXhwb3NlIHRoaXMgd2hlbiB0aGUgYXV0aG9yIGhhcyBleHBsaWNpdGx5
IHNwZWNpZmllZCB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMuCisgICAgaWYgKCFoYXNBdHRyaWJ1
dGUobG93QXR0cikgJiYgIWhhc0F0dHJpYnV0ZShoaWdoQXR0cikgJiYgIWhhc0F0dHJpYnV0ZShv
cHRpbXVtQXR0cikpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAKKyAgICBpZiAoSFRN
TE1ldGVyRWxlbWVudCogZWxlbWVudCA9IG1ldGVyRWxlbWVudCgpKQorICAgICAgICByZXR1cm4g
QVhNZXRlckdhdWdlUmVnaW9uVmFsdWVUZXh0KGVsZW1lbnQtPmdhdWdlUmVnaW9uKCkpOworI2Vu
ZGlmCisgICAgcmV0dXJuIFN0cmluZygpOworfQogI2VuZGlmCiAKIEVsZW1lbnQqIEFjY2Vzc2li
aWxpdHlQcm9ncmVzc0luZGljYXRvcjo6ZWxlbWVudCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVByb2dy
ZXNzSW5kaWNhdG9yLmgJKHJldmlzaW9uIDIwNzQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDYgKzM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVBy
b2dyZXNzSW5kaWNhdG9yPiBjcmVhdGUoUmVuZGVyUHJvZ3Jlc3MqKTsKICNpZiBFTkFCTEUoTUVU
RVJfRUxFTUVOVCkKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRv
cj4gY3JlYXRlKFJlbmRlck1ldGVyKik7CisgICAgU3RyaW5nIGdhdWdlUmVnaW9uVmFsdWVEZXNj
cmlwdGlvbigpIGNvbnN0OwogI2VuZGlmCiAgICAgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0IG92
ZXJyaWRlOwogCkBAIC02NSw0ICs2Niw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZKEFjY2Vzc2liaWxp
dHlQcm9ncmVzc0luZGljYXRvciwgaXNQcm9ncmVzc0luZGljYXRvcigpKQorCiAjZW5kaWYgLy8g
QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZpc2lvbiAyMDc0NzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxh
YmVsLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgogI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eUxpc3RCb3guaCIKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5o
IgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgogI2ltcG9ydCAiQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgi
CkBAIC03Niw3ICs3Nyw3IEBACiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAj
aW1wb3J0ICJodG1sZWRpdGluZy5oIgogI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+
Ci0jaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQorI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykg
fHwgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAjZW5kaWYKIApAQCAtMjYwMiw2ICsyNjAzLDI5IEBAIC0gKGlkKXNjcm9sbFZpZXdQYXJl
bnQKICAgICByZXR1cm4gW3NlbGYgcmVtb3RlQWNjZXNzaWJpbGl0eVBhcmVudE9iamVjdF07CiB9
CiAKKy0gKE5TU3RyaW5nICopdmFsdWVEZXNjcmlwdGlvbkZvck1ldGVyCit7CisgICAgaWYgKCFt
X29iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBTdHJpbmcgdmFsdWVEZXNj
cmlwdGlvbiA9IG1fb2JqZWN0LT52YWx1ZURlc2NyaXB0aW9uKCk7CisjaWYgRU5BQkxFKE1FVEVS
X0VMRU1FTlQpCisgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I+KG1f
b2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIHZhbHVlRGVzY3JpcHRpb247CisgICAgYXV0byAmbWV0
ZXIgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I+KCptX29iamVjdCk7
CisgICAgU3RyaW5nIGdhdWdlUmVnaW9uVmFsdWUgPSBtZXRlci5nYXVnZVJlZ2lvblZhbHVlRGVz
Y3JpcHRpb24oKTsKKyAgICBpZiAoIWdhdWdlUmVnaW9uVmFsdWUuaXNFbXB0eSgpKSB7CisgICAg
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQodmFsdWVE
ZXNjcmlwdGlvbik7CisgICAgICAgIGlmIChidWlsZGVyLmxlbmd0aCgpKQorICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZChnYXVn
ZVJlZ2lvblZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICB9
CisjZW5kaWYKKyAgICByZXR1cm4gdmFsdWVEZXNjcmlwdGlvbjsKK30KKwogLy8gRklYTUU6IHNw
bGl0IHVwIHRoaXMgZnVuY3Rpb24gaW4gYSBiZXR0ZXIgd2F5LgogLy8gc3VnZ2VzdGlvbnM6IFVz
ZSBhIGhhc2ggdGFibGUgdGhhdCBtYXBzIGF0dHJpYnV0ZSBuYW1lcyB0byBmdW5jdGlvbiBjYWxs
cywKIC8vIG9yIG1heWJlIHBvaW50ZXJzIHRvIG1lbWJlciBmdW5jdGlvbnMKQEAgLTMxOTksOCAr
MzIyMywxMSBAQCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyCiAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgfQogICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0ZV0pCisg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWYWx1
ZURlc2NyaXB0aW9uQXR0cmlidXRlXSkgeworICAgICAgICBpZiAobV9vYmplY3QtPmlzTWV0ZXIo
KSkKKyAgICAgICAgICAgIHJldHVybiBbc2VsZiB2YWx1ZURlc2NyaXB0aW9uRm9yTWV0ZXJdOwog
ICAgICAgICByZXR1cm4gbV9vYmplY3QtPnZhbHVlRGVzY3JpcHRpb24oKTsKKyAgICB9CiAgICAg
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbkF0dHJpYnV0ZV0pIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9u
IGVsZW1lbnRPcmllbnRhdGlvbiA9IG1fb2JqZWN0LT5vcmllbnRhdGlvbigpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAJKHJldmlzaW9uIDIw
NzQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw5IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkKICNp
bmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaWYgRU5BQkxFKE1FVEVSX0VMRU1F
TlQpCisjaW5jbHVkZSAiSFRNTE1ldGVyRWxlbWVudC5oIgorI2VuZGlmCiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNzgxLDYgKzc4NCwyMyBAQCBTdHJpbmcgQVhIb3Jpem9udGFs
UnVsZURlc2NyaXB0aW9uVGV4dCgpCiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoInNlcGFyYXRv
ciIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGEgaG9yaXpvbnRhbCBydWxl
IFs8aHI+XSIpOwogfQogICAgIAorI2lmIEVOQUJMRShNRVRFUl9FTEVNRU5UKQorU3RyaW5nIEFY
TWV0ZXJHYXVnZVJlZ2lvblZhbHVlVGV4dChpbnQgdmFsdWUpCit7CisgICAgc3dpdGNoICh2YWx1
ZSkgeworICAgIGNhc2UgSFRNTE1ldGVyRWxlbWVudDo6R2F1Z2VSZWdpb25PcHRpbXVtOgorICAg
ICAgICByZXR1cm4gV0VCX1VJX1NUUklORygib3B0aW11bSIsICJUaGUgb3B0aW11bSB2YWx1ZSBk
ZXNjcmlwdGlvbiBmb3IgYSBtZXRlciBlbGVtZW50LiIpOworICAgIGNhc2UgSFRNTE1ldGVyRWxl
bWVudDo6R2F1Z2VSZWdpb25TdWJvcHRpbWFsOgorICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklO
Rygic3Vib3B0aW1hbCIsICJUaGUgc3Vib3B0aW1hbCB2YWx1ZSBkZXNjcmlwdGlvbiBmb3IgYSBt
ZXRlciBlbGVtZW50LiIpOworICAgIGNhc2UgSFRNTE1ldGVyRWxlbWVudDo6R2F1Z2VSZWdpb25F
dmVuTGVzc0dvb2Q6CisgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJsZXNzIGdvb2QiLCAi
VGhlIGxlc3MgZ29vZCB2YWx1ZSBkZXNjcmlwdGlvbiBmb3IgYSBtZXRlciBlbGVtZW50LiIpOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoTUVURVJfRUxFTUVOVCkKICNlbmRpZiAvLyBQTEFURk9S
TShDT0NPQSkKIAogU3RyaW5nIG1pc3NpbmdQbHVnaW5UZXh0KCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgJKHJldmlzaW9uIDIwNzQ3OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAkod29ya2luZyBjb3B5KQpA
QCAtMTk2LDYgKzE5Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBTdHJpbmcgQVhBUklBQ29udGVudEdyb3VwVGV4dChjb25zdCBTdHJpbmcmIGFyaWFU
eXBlKTsKICAgICBTdHJpbmcgQVhIb3Jpem9udGFsUnVsZURlc2NyaXB0aW9uVGV4dCgpOworI2lm
IEVOQUJMRShNRVRFUl9FTEVNRU5UKQorICAgIFN0cmluZyBBWE1ldGVyR2F1Z2VSZWdpb25WYWx1
ZVRleHQoaW50IHZhbHVlKTsKKyNlbmRpZgogI2VuZGlmCiAgICAgCiAgICAgU3RyaW5nIEFYQXV0
b0ZpbGxDcmVkZW50aWFsc0xhYmVsKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDc0NzgpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAx
Ni0xMC0xOCAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBbTWFj
XSBNZXRlciBlbGVtZW50IHNob3VsZCB1c2UgQVhWYWx1ZURlc2NyaXB0aW9uIHRvIGRlc2NyYmUg
dGhlIHN0YXR1cyBvZiB0aGUgdmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MzYxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvbWV0ZXItZ2F1Z2UtdmFsdWUtZGVz
Y3JpcHRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9tZXRlci1nYXVnZS12YWx1ZS1kZXNjcmlwdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxNi0xMC0x
OCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZmxh
a3kgZXhwZWN0YXRpb24gZm9yIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2xhdGNoZWQtZGl2LXdp
dGgtc2Nyb2xsLXNuYXAuaHRtbCB0aGF0IHdhcyBlcnJhbnRseSByZW1vdmVkLgpJbmRleDogTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvbWV0ZXItZ2F1Z2UtdmFsdWUtZGVzY3JpcHRpb24t
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L21ldGVyLWdhdWdlLXZhbHVlLWRlc2NyaXB0aW9uLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9tZXRlci1nYXVnZS12YWx1ZS1kZXNj
cmlwdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNSBAQAorICAg
IAorVGhpcyB0ZXN0cyB0aGUgZ2F1Z2UgdmFsdWUgZGVzY3JpcHRpb24gZm9yIG1ldGVyIGVsZW1l
bnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBtZXRlcjEudmFsdWVE
ZXNjcmlwdGlvbiBpcyAnQVhWYWx1ZURlc2NyaXB0aW9uOiAnCitQQVNTIG1ldGVyMi52YWx1ZURl
c2NyaXB0aW9uIGlzICdBWFZhbHVlRGVzY3JpcHRpb246IHN1Ym9wdGltYWwgdmFsdWUnCitQQVNT
IG1ldGVyMy52YWx1ZURlc2NyaXB0aW9uIGlzICdBWFZhbHVlRGVzY3JpcHRpb246IG9wdGltYWwg
dmFsdWUnCitQQVNTIG1ldGVyNC52YWx1ZURlc2NyaXB0aW9uIGlzICdBWFZhbHVlRGVzY3JpcHRp
b246IGNyaXRpY2FsIHZhbHVlJworUEFTUyBtZXRlcjUudmFsdWVEZXNjcmlwdGlvbiBpcyAnQVhW
YWx1ZURlc2NyaXB0aW9uOiA1MCBob3Vycywgb3B0aW1hbCB2YWx1ZScKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy9tZXRlci1nYXVnZS12YWx1ZS1kZXNjcmlwdGlvbi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL21ldGVyLWdhdWdlLXZhbHVl
LWRlc2NyaXB0aW9uLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvbWV0ZXItZ2F1Z2UtdmFsdWUtZGVzY3JpcHRpb24uaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKzxt
ZXRlciBpZD0ibWV0ZXIiIHZhbHVlPSI4My41Ij48L21ldGVyPgorPG1ldGVyIGlkPSJtZXRlcjIi
IHZhbHVlPSI1IiBvcHRpbXVtPSI1MCIgbWluPSIwIiBtYXg9IjEwMCIgbG93PSIxMCIgaGlnaD0i
ODAiPjwvbWV0ZXI+Cis8bWV0ZXIgaWQ9Im1ldGVyMyIgdmFsdWU9IjUwIiBvcHRpbXVtPSI1MCIg
bWluPSIwIiBtYXg9IjEwMCIgbG93PSIxMCIgaGlnaD0iODAiPjwvbWV0ZXI+Cis8bWV0ZXIgaWQ9
Im1ldGVyNCIgdmFsdWU9IjkwIiBvcHRpbXVtPSIyMCIgbWluPSIwIiBtYXg9IjEwMCIgbG93PSI1
MCIgaGlnaD0iODAiPjwvbWV0ZXI+Cis8bWV0ZXIgaWQ9Im1ldGVyNSIgdmFsdWU9IjUwIiBvcHRp
bXVtPSI1MCIgbWluPSIwIiBtYXg9IjEwMCIgbG93PSIxMCIgaGlnaD0iODAiPjUwIGhvdXJzPC9t
ZXRlcj4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgZ2F1Z2UgdmFs
dWUgZGVzY3JpcHRpb24gZm9yIG1ldGVyIGVsZW1lbnRzLiIpOworCisgICAgaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICAgICAgICAgLy8gVGVzdCB0aGF0IHdlIGFy
ZSBub3QgZXhwb3NpbmcgdGhlIGdhdWdlIHZhbHVlIGRlc2NyaXB0aW9uIGlmIGF1dGhvciAKKyAg
ICAgICAgICAvLyBkaWRuJ3Qgc3BlY2lmeSBsb3csIGhpZ2ggb3Igb3B0aW11bSBhdHRyaWJ1dGUu
CisgICAgICAgICAgdmFyIG1ldGVyMSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgibWV0ZXIiKTsKKyAgICAgICAgICBzaG91bGRCZSgibWV0ZXIxLnZhbHVl
RGVzY3JpcHRpb24iLCAiJ0FYVmFsdWVEZXNjcmlwdGlvbjogJyIpOworCisgICAgICAgICAgdmFy
IG1ldGVyMiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgi
bWV0ZXIyIik7CisgICAgICAgICAgc2hvdWxkQmUoIm1ldGVyMi52YWx1ZURlc2NyaXB0aW9uIiwg
IidBWFZhbHVlRGVzY3JpcHRpb246IHN1Ym9wdGltYWwgdmFsdWUnIik7CisgICAgICAgICAgCisg
ICAgICAgICAgdmFyIG1ldGVyMyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgibWV0ZXIzIik7CisgICAgICAgICAgc2hvdWxkQmUoIm1ldGVyMy52YWx1ZURl
c2NyaXB0aW9uIiwgIidBWFZhbHVlRGVzY3JpcHRpb246IG9wdGltYWwgdmFsdWUnIik7CisgICAg
ICAgICAgCisgICAgICAgICAgdmFyIG1ldGVyNCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgibWV0ZXI0Iik7CisgICAgICAgICAgc2hvdWxkQmUoIm1ldGVy
NC52YWx1ZURlc2NyaXB0aW9uIiwgIidBWFZhbHVlRGVzY3JpcHRpb246IGNyaXRpY2FsIHZhbHVl
JyIpOworICAgICAgICAgIAorICAgICAgICAgIC8vIFRlc3QgbWV0ZXIgd2l0aCBpbm5lciB0ZXh0
LgorICAgICAgICAgIHZhciBtZXRlcjUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoIm1ldGVyNSIpOworICAgICAgICAgIHNob3VsZEJlKCJtZXRlcjUudmFs
dWVEZXNjcmlwdGlvbiIsICInQVhWYWx1ZURlc2NyaXB0aW9uOiA1MCBob3Vycywgb3B0aW1hbCB2
YWx1ZSciKTsKKyAgICB9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292072</attachid>
            <date>2016-10-19 09:12:07 -0700</date>
            <delta_ts>2016-10-19 09:51:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>12826</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzUzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE2LTEwLTE5ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFtNYWNdIE1ldGVyIGVsZW1lbnQg
c2hvdWxkIHVzZSBBWFZhbHVlRGVzY3JpcHRpb24gdG8gZGVzY3JiZSB0aGUgc3RhdHVzIG9mIHRo
ZSB2YWx1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYzNjEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwb3NlZCB0aGUgZ29vZG5lc3Mgb2YgdGhlIG1ldGVyIHZhbHVlIGluIEFYVmFsdWVEZXNjcmlw
dGlvbi4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L21hYy9tZXRlci1nYXVnZS12YWx1
ZS1kZXNjcmlwdGlvbi5odG1sCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxl
LnN0cmluZ3M6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJ
bmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5k
aWNhdG9yOjpnYXVnZVJlZ2lvblZhbHVlRGVzY3JpcHRpb24pOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHZhbHVlRGVzY3JpcHRpb25Gb3JNZXRl
cl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6XSk6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE1ldGVyR2F1Z2VSZWdpb25PcHRpbXVtVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpBWE1ldGVyR2F1Z2VSZWdpb25TdWJvcHRpbWFsVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE1ldGVyR2F1Z2VSZWdpb25MZXNzR29vZFRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaDoKKwogMjAxNi0xMC0xOSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFNlY3VyaXR5T3JpZ2lu
Ojp0YWludHNDYW52YXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxp
emFibGUuc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9q
L0xvY2FsaXphYmxlLnN0cmluZ3MJKHJldmlzaW9uIDIwNzUzNykKKysrIFNvdXJjZS9XZWJDb3Jl
L0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwkod29ya2luZyBjb3B5KQpAQCAtOTMx
LDYgKzkzMSw5IEBACiAvKiBIVFRQIHJlc3VsdCBjb2RlIHN0cmluZyAqLwogImxlbmd0aCByZXF1
aXJlZCIgPSAibGVuZ3RoIHJlcXVpcmVkIjsKIAorLyogVGhlIGxlc3MgZ29vZCB2YWx1ZSBkZXNj
cmlwdGlvbiBmb3IgYSBtZXRlciBlbGVtZW50ICovCisibGVzcyBnb29kIiA9ICJjcml0aWNhbCB2
YWx1ZSI7CisKIC8qIGFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgbGluayAqLwog
ImxpbmsiID0gImxpbmsiOwogCkBAIC0xMDE4LDYgKzEwMjEsOSBAQAogLyogYWNjZXNzaWJpbGl0
eSByb2xlIGRlc2NyaXB0aW9uIGZvciBhbiBvdXRwdXQgZWxlbWVudCAqLwogIm91dHB1dCIgPSAi
b3V0cHV0IjsKIAorLyogVGhlIG9wdGltdW0gdmFsdWUgZGVzY3JpcHRpb24gZm9yIGEgbWV0ZXIg
ZWxlbWVudCAqLworIm9wdGltdW0iID0gIm9wdGltYWwgdmFsdWUiOworCiAvKiBIVFRQIHJlc3Vs
dCBjb2RlIHN0cmluZyAqLwogInBhcnRpYWwgY29udGVudCIgPSAicGFydGlhbCBjb250ZW50IjsK
IApAQCAtMTEyMCw2ICsxMTI2LDkgQEAKIC8qIGFjY2Vzc2liaWxpdHkgaGVscCB0ZXh0IGZvciBo
aWRlIGNsb3NlZCBjYXB0aW9ucyBidXR0b24gKi8KICJzdG9wIGRpc3BsYXlpbmcgY2xvc2VkIGNh
cHRpb25zIiA9ICJzdG9wIGRpc3BsYXlpbmcgY2xvc2VkIGNhcHRpb25zIjsKIAorLyogVGhlIHN1
Ym9wdGltYWwgdmFsdWUgZGVzY3JpcHRpb24gZm9yIGEgbWV0ZXIgZWxlbWVudCAqLworInN1Ym9w
dGltYWwiID0gInN1Ym9wdGltYWwgdmFsdWUiOworCiAvKiBIVFRQIHJlc3VsdCBjb2RlIHN0cmlu
ZyAqLwogInN1Y2Nlc3MiID0gInN1Y2Nlc3MiOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRp
Y2F0b3IuY3BwCShyZXZpc2lvbiAyMDc1MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJIVE1MTWV0ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFByb2dyZXNzRWxlbWVudC5oIgorI2luY2x1ZGUg
IkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJSZW5kZXJNZXRlci5oIgogI2luY2x1ZGUg
IlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclByb2dyZXNzLmgiCkBAIC0xNjcsNiAr
MTY4LDMyIEBAIEhUTUxNZXRlckVsZW1lbnQqIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0kKIAogICAg
IHJldHVybiBkb3duY2FzdDxSZW5kZXJNZXRlcj4oKm1fcmVuZGVyZXIpLm1ldGVyRWxlbWVudCgp
OwogfQorCitTdHJpbmcgQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yOjpnYXVnZVJlZ2lv
blZhbHVlRGVzY3JpcHRpb24oKSBjb25zdAoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlm
ICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNNZXRlcigpKQorICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CisgICAgCisgICAgLy8gT25seSBleHBvc2UgdGhpcyB3aGVuIHRoZSBhdXRob3Ig
aGFzIGV4cGxpY2l0bHkgc3BlY2lmaWVkIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcy4KKyAgICBp
ZiAoIWhhc0F0dHJpYnV0ZShsb3dBdHRyKSAmJiAhaGFzQXR0cmlidXRlKGhpZ2hBdHRyKSAmJiAh
aGFzQXR0cmlidXRlKG9wdGltdW1BdHRyKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAg
IAorICAgIGlmIChIVE1MTWV0ZXJFbGVtZW50KiBlbGVtZW50ID0gbWV0ZXJFbGVtZW50KCkpIHsK
KyAgICAgICAgc3dpdGNoIChlbGVtZW50LT5nYXVnZVJlZ2lvbigpKSB7CisgICAgICAgIGNhc2Ug
SFRNTE1ldGVyRWxlbWVudDo6R2F1Z2VSZWdpb25PcHRpbXVtOgorICAgICAgICAgICAgcmV0dXJu
IEFYTWV0ZXJHYXVnZVJlZ2lvbk9wdGltdW1UZXh0KCk7CisgICAgICAgIGNhc2UgSFRNTE1ldGVy
RWxlbWVudDo6R2F1Z2VSZWdpb25TdWJvcHRpbWFsOgorICAgICAgICAgICAgcmV0dXJuIEFYTWV0
ZXJHYXVnZVJlZ2lvblN1Ym9wdGltYWxUZXh0KCk7CisgICAgICAgIGNhc2UgSFRNTE1ldGVyRWxl
bWVudDo6R2F1Z2VSZWdpb25FdmVuTGVzc0dvb2Q6CisgICAgICAgICAgICByZXR1cm4gQVhNZXRl
ckdhdWdlUmVnaW9uTGVzc0dvb2RUZXh0KCk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBTdHJpbmcoKTsK
K30KICNlbmRpZgogCiBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I6OmVs
ZW1lbnQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oCShyZXZpc2lvbiAy
MDc1MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9n
cmVzc0luZGljYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvcj4gY3JlYXRlKFJl
bmRlclByb2dyZXNzKik7CiAjaWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCiAgICAgc3RhdGljIFJl
ZjxBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I+IGNyZWF0ZShSZW5kZXJNZXRlciopOwor
ICAgIFN0cmluZyBnYXVnZVJlZ2lvblZhbHVlRGVzY3JpcHRpb24oKSBjb25zdDsKICNlbmRpZgog
ICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtNjUsNCArNjYsNiBA
QCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQUNDRVNTSUJJTElUWShBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IsIGlzUHJv
Z3Jlc3NJbmRpY2F0b3IoKSkKKwogI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGlj
YXRvcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2
aXNpb24gMjA3NTM3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5oIgogI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eUxpc3QuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0Qm94LmgiCisjaW1wb3J0ICJB
Y2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgiCiAjaW1w
b3J0ICJBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oIgpAQCAtNzYsNyArNzcsNyBAQAogI2ltcG9y
dCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiaHRtbGVkaXRpbmcuaCIKICNp
bXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgotI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lO
RykKKyNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpIHx8IEVOQUJMRShNRVRFUl9FTEVNRU5UKQog
I2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2VuZGlmCiAKQEAgLTI2MDIsNiAr
MjYwMywyOSBAQCAtIChpZClzY3JvbGxWaWV3UGFyZW50CiAgICAgcmV0dXJuIFtzZWxmIHJlbW90
ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmplY3RdOwogfQogCistIChOU1N0cmluZyAqKXZhbHVlRGVz
Y3JpcHRpb25Gb3JNZXRlcgoreworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiBu
aWw7CisgICAgCisgICAgU3RyaW5nIHZhbHVlRGVzY3JpcHRpb24gPSBtX29iamVjdC0+dmFsdWVE
ZXNjcmlwdGlvbigpOworI2lmIEVOQUJMRShNRVRFUl9FTEVNRU5UKQorICAgIGlmICghaXM8QWNj
ZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yPihtX29iamVjdCkpCisgICAgICAgIHJldHVybiB2
YWx1ZURlc2NyaXB0aW9uOworICAgIGF1dG8gJm1ldGVyID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eVByb2dyZXNzSW5kaWNhdG9yPigqbV9vYmplY3QpOworICAgIFN0cmluZyBnYXVnZVJlZ2lvblZh
bHVlID0gbWV0ZXIuZ2F1Z2VSZWdpb25WYWx1ZURlc2NyaXB0aW9uKCk7CisgICAgaWYgKCFnYXVn
ZVJlZ2lvblZhbHVlLmlzRW1wdHkoKSkgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHZhbHVlRGVzY3JpcHRpb24pOworICAgICAgICBpZiAo
YnVpbGRlci5sZW5ndGgoKSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCAi
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoZ2F1Z2VSZWdpb25WYWx1ZSk7CisgICAgICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHZhbHVl
RGVzY3JpcHRpb247Cit9CisKIC8vIEZJWE1FOiBzcGxpdCB1cCB0aGlzIGZ1bmN0aW9uIGluIGEg
YmV0dGVyIHdheS4KIC8vIHN1Z2dlc3Rpb25zOiBVc2UgYSBoYXNoIHRhYmxlIHRoYXQgbWFwcyBh
dHRyaWJ1dGUgbmFtZXMgdG8gZnVuY3Rpb24gY2FsbHMsCiAvLyBvciBtYXliZSBwb2ludGVycyB0
byBtZW1iZXIgZnVuY3Rpb25zCkBAIC0zMTk5LDggKzMyMjMsMTEgQEAgLSAoaWQpYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cgogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KICAg
ICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eVZhbHVlRGVzY3JpcHRpb25BdHRyaWJ1dGVdKQorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0ZV0pIHsK
KyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01ldGVyKCkpCisgICAgICAgICAgICByZXR1cm4gW3Nl
bGYgdmFsdWVEZXNjcmlwdGlvbkZvck1ldGVyXTsKICAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT52
YWx1ZURlc2NyaXB0aW9uKCk7CisgICAgfQogICAgIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdKSB7CiAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBlbGVtZW50T3JpZW50YXRpb24gPSBtX29i
amVjdC0+b3JpZW50YXRpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Y2FsaXplZFN0cmluZ3MuY3BwCShyZXZpc2lvbiAyMDc1MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgxLDYgKzc4
MSwyMiBAQCBTdHJpbmcgQVhIb3Jpem9udGFsUnVsZURlc2NyaXB0aW9uVGV4dCgpCiAgICAgcmV0
dXJuIFdFQl9VSV9TVFJJTkcoInNlcGFyYXRvciIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3Jp
cHRpb24gZm9yIGEgaG9yaXpvbnRhbCBydWxlIFs8aHI+XSIpOwogfQogICAgIAorI2lmIEVOQUJM
RShNRVRFUl9FTEVNRU5UKQorU3RyaW5nIEFYTWV0ZXJHYXVnZVJlZ2lvbk9wdGltdW1UZXh0KCkK
K3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygib3B0aW11bSIsICJUaGUgb3B0aW11bSB2YWx1
ZSBkZXNjcmlwdGlvbiBmb3IgYSBtZXRlciBlbGVtZW50LiIpOworfQorCitTdHJpbmcgQVhNZXRl
ckdhdWdlUmVnaW9uU3Vib3B0aW1hbFRleHQoKQoreworICAgIHJldHVybiBXRUJfVUlfU1RSSU5H
KCJzdWJvcHRpbWFsIiwgIlRoZSBzdWJvcHRpbWFsIHZhbHVlIGRlc2NyaXB0aW9uIGZvciBhIG1l
dGVyIGVsZW1lbnQuIik7Cit9CisKK1N0cmluZyBBWE1ldGVyR2F1Z2VSZWdpb25MZXNzR29vZFRl
eHQoKQoreworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJsZXNzIGdvb2QiLCAiVGhlIGxlc3Mg
Z29vZCB2YWx1ZSBkZXNjcmlwdGlvbiBmb3IgYSBtZXRlciBlbGVtZW50LiIpOworfQorI2VuZGlm
IC8vIEVOQUJMRShNRVRFUl9FTEVNRU5UKQogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiBT
dHJpbmcgbWlzc2luZ1BsdWdpblRleHQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TG9jYWxpemVkU3RyaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvY2FsaXplZFN0cmluZ3MuaAkocmV2aXNpb24gMjA3NTM3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBTdHJp
bmcgQVhBUklBQ29udGVudEdyb3VwVGV4dChjb25zdCBTdHJpbmcmIGFyaWFUeXBlKTsKICAgICBT
dHJpbmcgQVhIb3Jpem9udGFsUnVsZURlc2NyaXB0aW9uVGV4dCgpOworI2lmIEVOQUJMRShNRVRF
Ul9FTEVNRU5UKQorICAgIFN0cmluZyBBWE1ldGVyR2F1Z2VSZWdpb25PcHRpbXVtVGV4dCgpOwor
ICAgIFN0cmluZyBBWE1ldGVyR2F1Z2VSZWdpb25TdWJvcHRpbWFsVGV4dCgpOworICAgIFN0cmlu
ZyBBWE1ldGVyR2F1Z2VSZWdpb25MZXNzR29vZFRleHQoKTsKKyNlbmRpZgogI2VuZGlmCiAgICAg
CiAgICAgU3RyaW5nIEFYQXV0b0ZpbGxDcmVkZW50aWFsc0xhYmVsKCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMDc1MzcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAxNi0xMC0xOSAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgor
CisgICAgICAgIEFYOiBbTWFjXSBNZXRlciBlbGVtZW50IHNob3VsZCB1c2UgQVhWYWx1ZURlc2Ny
aXB0aW9uIHRvIGRlc2NyYmUgdGhlIHN0YXR1cyBvZiB0aGUgdmFsdWUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzYxMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvbWV0
ZXItZ2F1Z2UtdmFsdWUtZGVzY3JpcHRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L21hYy9tZXRlci1nYXVnZS12YWx1ZS1kZXNjcmlwdGlvbi5odG1sOiBB
ZGRlZC4KKwogMjAxNi0xMC0xOSAgSmF2aWVyIEZlcm5hbmRleiAgPGpmZXJuYW5kZXpAaWdhbGlh
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBEZWJ1Z2dlciBidXR0b25zIHBvc2l0aW9u
ZWQgaW5jb3JyZWN0bHksIGFsaWduLWNvbnRlbnQgZGVmYXVsdCB2YWx1ZSBpcyB1bmV4cGVjdGVk
CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9tZXRlci1nYXVnZS12YWx1ZS1k
ZXNjcmlwdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvbWV0ZXItZ2F1Z2UtdmFsdWUtZGVzY3JpcHRpb24tZXhwZWN0ZWQudHh0CShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL21ldGVyLWdhdWdl
LXZhbHVlLWRlc2NyaXB0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE1IEBACisgICAgCitUaGlzIHRlc3RzIHRoZSBnYXVnZSB2YWx1ZSBkZXNjcmlwdGlvbiBmb3Ig
bWV0ZXIgZWxlbWVudHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG1l
dGVyMS52YWx1ZURlc2NyaXB0aW9uIGlzICdBWFZhbHVlRGVzY3JpcHRpb246ICcKK1BBU1MgbWV0
ZXIyLnZhbHVlRGVzY3JpcHRpb24gaXMgJ0FYVmFsdWVEZXNjcmlwdGlvbjogc3Vib3B0aW1hbCB2
YWx1ZScKK1BBU1MgbWV0ZXIzLnZhbHVlRGVzY3JpcHRpb24gaXMgJ0FYVmFsdWVEZXNjcmlwdGlv
bjogb3B0aW1hbCB2YWx1ZScKK1BBU1MgbWV0ZXI0LnZhbHVlRGVzY3JpcHRpb24gaXMgJ0FYVmFs
dWVEZXNjcmlwdGlvbjogY3JpdGljYWwgdmFsdWUnCitQQVNTIG1ldGVyNS52YWx1ZURlc2NyaXB0
aW9uIGlzICdBWFZhbHVlRGVzY3JpcHRpb246IDUwIGhvdXJzLCBvcHRpbWFsIHZhbHVlJworUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL21ldGVyLWdhdWdlLXZhbHVlLWRlc2NyaXB0aW9u
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvbWV0ZXIt
Z2F1Z2UtdmFsdWUtZGVzY3JpcHRpb24uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9tZXRlci1nYXVnZS12YWx1ZS1kZXNjcmlwdGlvbi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJi
b2R5Ij4KKworPG1ldGVyIGlkPSJtZXRlciIgdmFsdWU9IjgzLjUiPjwvbWV0ZXI+Cis8bWV0ZXIg
aWQ9Im1ldGVyMiIgdmFsdWU9IjUiIG9wdGltdW09IjUwIiBtaW49IjAiIG1heD0iMTAwIiBsb3c9
IjEwIiBoaWdoPSI4MCI+PC9tZXRlcj4KKzxtZXRlciBpZD0ibWV0ZXIzIiB2YWx1ZT0iNTAiIG9w
dGltdW09IjUwIiBtaW49IjAiIG1heD0iMTAwIiBsb3c9IjEwIiBoaWdoPSI4MCI+PC9tZXRlcj4K
KzxtZXRlciBpZD0ibWV0ZXI0IiB2YWx1ZT0iOTAiIG9wdGltdW09IjIwIiBtaW49IjAiIG1heD0i
MTAwIiBsb3c9IjUwIiBoaWdoPSI4MCI+PC9tZXRlcj4KKzxtZXRlciBpZD0ibWV0ZXI1IiB2YWx1
ZT0iNTAiIG9wdGltdW09IjUwIiBtaW49IjAiIG1heD0iMTAwIiBsb3c9IjEwIiBoaWdoPSI4MCI+
NTAgaG91cnM8L21ldGVyPgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRo
ZSBnYXVnZSB2YWx1ZSBkZXNjcmlwdGlvbiBmb3IgbWV0ZXIgZWxlbWVudHMuIik7CisKKyAgICBp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisKKyAgICAgICAgICAvLyBUZXN0
IHRoYXQgd2UgYXJlIG5vdCBleHBvc2luZyB0aGUgZ2F1Z2UgdmFsdWUgZGVzY3JpcHRpb24gaWYg
YXV0aG9yIAorICAgICAgICAgIC8vIGRpZG4ndCBzcGVjaWZ5IGxvdywgaGlnaCBvciBvcHRpbXVt
IGF0dHJpYnV0ZS4KKyAgICAgICAgICB2YXIgbWV0ZXIxID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtZXRlciIpOworICAgICAgICAgIHNob3VsZEJlKCJt
ZXRlcjEudmFsdWVEZXNjcmlwdGlvbiIsICInQVhWYWx1ZURlc2NyaXB0aW9uOiAnIik7CisKKyAg
ICAgICAgICB2YXIgbWV0ZXIyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJtZXRlcjIiKTsKKyAgICAgICAgICBzaG91bGRCZSgibWV0ZXIyLnZhbHVlRGVz
Y3JpcHRpb24iLCAiJ0FYVmFsdWVEZXNjcmlwdGlvbjogc3Vib3B0aW1hbCB2YWx1ZSciKTsKKyAg
ICAgICAgICAKKyAgICAgICAgICB2YXIgbWV0ZXIzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtZXRlcjMiKTsKKyAgICAgICAgICBzaG91bGRCZSgibWV0
ZXIzLnZhbHVlRGVzY3JpcHRpb24iLCAiJ0FYVmFsdWVEZXNjcmlwdGlvbjogb3B0aW1hbCB2YWx1
ZSciKTsKKyAgICAgICAgICAKKyAgICAgICAgICB2YXIgbWV0ZXI0ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtZXRlcjQiKTsKKyAgICAgICAgICBzaG91
bGRCZSgibWV0ZXI0LnZhbHVlRGVzY3JpcHRpb24iLCAiJ0FYVmFsdWVEZXNjcmlwdGlvbjogY3Jp
dGljYWwgdmFsdWUnIik7CisgICAgICAgICAgCisgICAgICAgICAgLy8gVGVzdCBtZXRlciB3aXRo
IGlubmVyIHRleHQuCisgICAgICAgICAgdmFyIG1ldGVyNSA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibWV0ZXI1Iik7CisgICAgICAgICAgc2hvdWxkQmUo
Im1ldGVyNS52YWx1ZURlc2NyaXB0aW9uIiwgIidBWFZhbHVlRGVzY3JpcHRpb246IDUwIGhvdXJz
LCBvcHRpbWFsIHZhbHVlJyIpOworICAgIH0KKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>