<?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>155567</bug_id>
          
          <creation_ts>2016-03-16 16:47:03 -0700</creation_ts>
          <short_desc>AX: Implement AutoFill Available attribute for a text field</short_desc>
          <delta_ts>2016-08-19 15:09:34 -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>Safari 9</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="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>dbates</cc>
    
    <cc>mario</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1175560</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-03-16 16:47:03 -0700</bug_when>
    <thetext>Make sure auto fill buttons are accessible and that we notify the text field that its available too

&lt;rdar://problem/24307473&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175562</commentid>
    <comment_count>1</comment_count>
      <attachid>274235</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-03-16 16:49:53 -0700</bug_when>
    <thetext>Created attachment 274235
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175570</commentid>
    <comment_count>2</comment_count>
      <attachid>274239</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-03-16 17:02:00 -0700</bug_when>
    <thetext>Created attachment 274239
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175584</commentid>
    <comment_count>3</comment_count>
      <attachid>274245</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-03-16 17:30:03 -0700</bug_when>
    <thetext>Created attachment 274245
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175752</commentid>
    <comment_count>4</comment_count>
      <attachid>274245</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-17 09:25:32 -0700</bug_when>
    <thetext>Comment on attachment 274245
patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2207
&gt; +    if (!node || !is&lt;HTMLInputElement&gt;(*node))
&gt; +        return false;

This can be written like this:

    if (!is&lt;HTMLInputElement&gt;(node))
        return false;

The is&lt;&gt; function does the null check as long as you pass it a pointer rather than a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175753</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-03-17 09:29:24 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 274245 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=274245&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.cpp:2207
&gt; &gt; +    if (!node || !is&lt;HTMLInputElement&gt;(*node))
&gt; &gt; +        return false;
&gt; 
&gt; This can be written like this:
&gt; 
&gt;     if (!is&lt;HTMLInputElement&gt;(node))
&gt;         return false;
&gt; 
&gt; The is&lt;&gt; function does the null check as long as you pass it a pointer
&gt; rather than a reference.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175754</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-03-17 09:39:37 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/198333</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221500</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-08-19 15:09:34 -0700</bug_when>
    <thetext>*** Bug 145200 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274235</attachid>
            <date>2016-03-16 16:49:53 -0700</date>
            <delta_ts>2016-03-16 17:02:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13249</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE2LTAzLTE2ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEltcGxlbWVudCBB
dXRvRmlsbCBBdmFpbGFibGUgYXR0cmlidXRlIGZvciBhIHRleHQgZmllbGQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTU2NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSB0aGUgYXV0byBmaWxs
IGJ1dHRvbnMgdG8gdGhlIEFYIGhpZXJhcmNoeS4KKyAgICAgICAgQWRkIGFuIGF0dHJpYnV0ZSBm
b3IgdGhlIHRleHRmaWVsZCB0byBpbmZvcm0gd2hlbiB0aGUgYXV0byBmaWxsIGJ1dHRvbiBpcyBh
dmFpbGFibGUuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9hdXRvLWZpbGwtdHlwZXMu
aHRtbAorCisgICAgICAgICogRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1ZhbHVlQXV0b2ZpbGxlZCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXNzd29yZEZpZWxkVmFsdWUpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbik6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsaW1pdExlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjphdXRvRmlsbEJ1dHRvblR5cGVUb0FjY2Vzc2liaWxpdHlMYWJlbCk6CisgICAgICAgIChX
ZWJDb3JlOjphdXRvRmlsbEJ1dHRvblR5cGVUb0F1dG9GaWxsQnV0dG9uUHNldWRvQ2xhc3NOYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlQXV0b0ZpbGxC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVBdXRv
RmlsbEJ1dHRvbik6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBWExpc3RJdGVtQWN0aW9uVmVyYik6CisgICAgICAgIChXZWJDb3Jl
OjpBWEF1dG9GaWxsQ3JlZGVudGlhbHNMYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpBWEF1dG9G
aWxsQ29udGFjdHNMYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpBWEFSSUFDb250ZW50R3JvdXBU
ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisKIDIwMTYtMDMt
MTYgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgTlNT
cGVsbENoZWNrZXIgc3BlbGxDaGVja2luZyBtZXRob2RzIHdpdGggdGhlIGN1cnJlbnQgaW5zZXJ0
aW9uIHBvaW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmNwcAkocmV2aXNpb24gMTk4MjE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1NCw2ICs2NTQsMTYgQEAKIH0K
ICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCitTdHJpbmcgQVhBdXRvRmlsbENyZWRlbnRpYWxz
TGFiZWwoKQoreworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJwYXNzd29yZCBhdXRvIGZpbGwi
LCAiTGFiZWwgZm9yIHRoZSBhdXRvIGZpbGwgY3JlZGVudGlhbHMgYnV0dG9uIGluc2lkZSBhIHRl
eHQgZmllbGQuIik7Cit9CisKK1N0cmluZyBBWEF1dG9GaWxsQ29udGFjdHNMYWJlbCgpCit7Cisg
ICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoImNvbnRhY3QgaW5mbyBhdXRvIGZpbGwiLCAiTGFiZWwg
Zm9yIHRoZSBhdXRvIGZpbGwgY29udGFjdHMgYnV0dG9uIGluc2lkZSBhIHRleHQgZmllbGQuIik7
Cit9CisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBTdHJpbmcgQVhBUklBQ29udGVudEdyb3Vw
VGV4dChjb25zdCBTdHJpbmcmIGFyaWFUeXBlKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAkocmV2aXNpb24gMTk4MjE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODMs
NiArMTgzLDkgQEAKICAgICBTdHJpbmcgQVhBUklBQ29udGVudEdyb3VwVGV4dChjb25zdCBTdHJp
bmcmIGFyaWFUeXBlKTsKICAgICBTdHJpbmcgQVhIb3Jpem9udGFsUnVsZURlc2NyaXB0aW9uVGV4
dCgpOwogI2VuZGlmCisgICAgCisgICAgU3RyaW5nIEFYQXV0b0ZpbGxDcmVkZW50aWFsc0xhYmVs
KCk7CisgICAgU3RyaW5nIEFYQXV0b0ZpbGxDb250YWN0c0xhYmVsKCk7CiAKICAgICBTdHJpbmcg
bWlzc2luZ1BsdWdpblRleHQoKTsKICAgICBTdHJpbmcgY3Jhc2hlZFBsdWdpblRleHQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAJKHJldmlzaW9u
IDE5ODIxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50Lmgi
CisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHls
ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQu
aCIKQEAgLTM5OSw2ICs0MDAsMTkgQEAKICAgICByZXR1cm4gc3RyaW5nLmxlZnQobmV3TGVuZ3Ro
KTsKIH0KIAorc3RhdGljIFN0cmluZyBhdXRvRmlsbEJ1dHRvblR5cGVUb0FjY2Vzc2liaWxpdHlM
YWJlbChBdXRvRmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25UeXBlKQoreworICAgIHN3aXRj
aCAoYXV0b0ZpbGxCdXR0b25UeXBlKSB7CisgICAgY2FzZSBBdXRvRmlsbEJ1dHRvblR5cGU6OkNv
bnRhY3RzOgorICAgICAgICByZXR1cm4gQVhBdXRvRmlsbENvbnRhY3RzTGFiZWwoKTsKKyAgICBj
YXNlIEF1dG9GaWxsQnV0dG9uVHlwZTo6Q3JlZGVudGlhbHM6CisgICAgICAgIHJldHVybiBBWEF1
dG9GaWxsQ3JlZGVudGlhbHNMYWJlbCgpOworICAgIGNhc2UgQXV0b0ZpbGxCdXR0b25UeXBlOjpO
b25lOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEF0b21p
Y1N0cmluZygpOworICAgIH0KK30KKyAgICAKIHN0YXRpYyBBdG9taWNTdHJpbmcgYXV0b0ZpbGxC
dXR0b25UeXBlVG9BdXRvRmlsbEJ1dHRvblBzZXVkb0NsYXNzTmFtZShBdXRvRmlsbEJ1dHRvblR5
cGUgYXV0b0ZpbGxCdXR0b25UeXBlKQogewogICAgIEF0b21pY1N0cmluZyBwc2V1ZG9DbGFzc05h
bWU7CkBAIC02NDgsNiArNjYyLDggQEAKIAogICAgIG1fYXV0b0ZpbGxCdXR0b24gPSBBdXRvRmls
bEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCkuZG9jdW1lbnQoKSwgKnRoaXMpOwogICAg
IG1fYXV0b0ZpbGxCdXR0b24tPnNldFBzZXVkbyhhdXRvRmlsbEJ1dHRvblR5cGVUb0F1dG9GaWxs
QnV0dG9uUHNldWRvQ2xhc3NOYW1lKGF1dG9GaWxsQnV0dG9uVHlwZSkpOworICAgIG1fYXV0b0Zp
bGxCdXR0b24tPnNldEF0dHJpYnV0ZShyb2xlQXR0ciwgImJ1dHRvbiIpOworICAgIG1fYXV0b0Zp
bGxCdXR0b24tPnNldEF0dHJpYnV0ZShhcmlhX2xhYmVsQXR0ciwgYXV0b0ZpbGxCdXR0b25UeXBl
VG9BY2Nlc3NpYmlsaXR5TGFiZWwoYXV0b0ZpbGxCdXR0b25UeXBlKSk7CiAgICAgbV9jb250YWlu
ZXItPmFwcGVuZENoaWxkKCptX2F1dG9GaWxsQnV0dG9uLCBJR05PUkVfRVhDRVBUSU9OKTsKIH0K
IApAQCAtNjYyLDkgKzY3OCwxMCBAQAogCiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0
cmlidXRlID0gbV9hdXRvRmlsbEJ1dHRvbi0+ZmFzdEdldEF0dHJpYnV0ZShwc2V1ZG9BdHRyKTsK
ICAgICAgICAgYm9vbCBzaG91bGRVcGRhdGVBdXRvRmlsbEJ1dHRvblR5cGUgPSBpc0F1dG9GaWxs
QnV0dG9uVHlwZUNoYW5nZWQoYXR0cmlidXRlLCBlbGVtZW50KCkuYXV0b0ZpbGxCdXR0b25UeXBl
KCkpOwotICAgICAgICBpZiAoc2hvdWxkVXBkYXRlQXV0b0ZpbGxCdXR0b25UeXBlKQorICAgICAg
ICBpZiAoc2hvdWxkVXBkYXRlQXV0b0ZpbGxCdXR0b25UeXBlKSB7CiAgICAgICAgICAgICBtX2F1
dG9GaWxsQnV0dG9uLT5zZXRQc2V1ZG8oYXV0b0ZpbGxCdXR0b25UeXBlVG9BdXRvRmlsbEJ1dHRv
blBzZXVkb0NsYXNzTmFtZShlbGVtZW50KCkuYXV0b0ZpbGxCdXR0b25UeXBlKCkpKTsKLQorICAg
ICAgICAgICAgbV9hdXRvRmlsbEJ1dHRvbi0+c2V0QXR0cmlidXRlKGFyaWFfbGFiZWxBdHRyLCBh
dXRvRmlsbEJ1dHRvblR5cGVUb0FjY2Vzc2liaWxpdHlMYWJlbChlbGVtZW50KCkuYXV0b0ZpbGxC
dXR0b25UeXBlKCkpKTsKKyAgICAgICAgfQogICAgICAgICBtX2F1dG9GaWxsQnV0dG9uLT5zZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVCbG9jaywgdHJ1
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQkocmV2aXNpb24gMTk4MjE5KQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTE1Niw2ICsxNTYsMTAgQEAKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VmFs
dWVBdXRvZmlsbGVkQXR0cmlidXRlIEAiQVhWYWx1ZUF1dG9maWxsZWQiCiAjZW5kaWYKIAorI2lm
bmRlZiBOU0FjY2Vzc2liaWxpdHlWYWx1ZUF1dG9maWxsQXZhaWxhYmxlQXR0cmlidXRlCisjZGVm
aW5lIE5TQWNjZXNzaWJpbGl0eVZhbHVlQXV0b2ZpbGxBdmFpbGFibGVBdHRyaWJ1dGUgQCJBWFZh
bHVlQXV0b2ZpbGxBdmFpbGFibGUiCisjZW5kaWYKKwogI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlM
YW5ndWFnZUF0dHJpYnV0ZQogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlMYW5ndWFnZUF0dHJpYnV0
ZSBAIkFYTGFuZ3VhZ2UiCiAjZW5kaWYKQEAgLTMxOTYsNiArMzIwMCw5IEBACiAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQbGFjZWhvbGRlclZh
bHVlQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5wbGFjZWhvbGRlclZhbHVl
KCk7CiAKKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eVZhbHVlQXV0b2ZpbGxBdmFpbGFibGVBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gQCht
X29iamVjdC0+aXNWYWx1ZUF1dG9maWxsQXZhaWxhYmxlKCkpOworICAgIAogICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdXRvZmlsbGVk
QXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIEAobV9vYmplY3QtPmlzVmFsdWVBdXRvZmlsbGVk
KCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDE5ODIxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5NzcsNiArMjk3Nyw5IEBACiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1l
bnQ+KCpub2RlKTsKKyAgICBpZiAoSFRNTEVsZW1lbnQqIGF1dG9GaWxsRWxlbWVudCA9IGlucHV0
LmF1dG9GaWxsQnV0dG9uRWxlbWVudCgpKQorICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChheE9i
amVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGF1dG9GaWxsRWxlbWVudCkpOworICAgIAogICAgIEhU
TUxFbGVtZW50KiBzcGluQnV0dG9uRWxlbWVudCA9IGlucHV0LmlubmVyU3BpbkJ1dHRvbkVsZW1l
bnQoKTsKICAgICBpZiAoIWlzPFNwaW5CdXR0b25FbGVtZW50PihzcGluQnV0dG9uRWxlbWVudCkp
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiAxOTgyMTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtODkxLDYgKzg5MSw3IEBACiAKICAgICB2aXJ0dWFsIFN0cmluZyBwYXNzd29yZEZpZWxk
VmFsdWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIGJvb2wgaXNWYWx1ZUF1dG9m
aWxsZWQoKSBjb25zdDsKKyAgICBib29sIGlzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSgpIGNvbnN0
OwogICAgIAogICAgIC8vIFVzZWQgYnkgYW4gQVJJQSB0cmVlIHRvIGdldCBhbGwgaXRzIHJvd3Mu
CiAgICAgdm9pZCBhcmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAJKHJldmlzaW9uIDE5ODIxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOTcsNiAr
MjE5NywxOCBAQAogICAgIHJldHVybiBudWxscHRyOwogfQogICAgIAorYm9vbCBBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc1ZhbHVlQXV0b2ZpbGxBdmFpbGFibGUoKSBjb25zdAoreworICAgIGlmICgh
aXNOYXRpdmVUZXh0Q29udHJvbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAg
Tm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUgfHwgIWlzPEhUTUxJbnB1
dEVsZW1lbnQ+KCpub2RlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVy
biBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSkuYXV0b0ZpbGxCdXR0b25UeXBlKCkg
IT0gQXV0b0ZpbGxCdXR0b25UeXBlOjpOb25lOworfQorICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojppc1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0CiB7CiAgICAgaWYgKCFpc05hdGl2ZVRl
eHRDb250cm9sKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXph
YmxlLnN0cmluZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9M
b2NhbGl6YWJsZS5zdHJpbmdzCShyZXZpc2lvbiAxOTgyMTkpCisrKyBTb3VyY2UvV2ViQ29yZS9F
bmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MJKHdvcmtpbmcgY29weSkKQEAgLTc2MCw2
ICs3NjAsOSBAQAogLyogSFRUUCByZXN1bHQgY29kZSBzdHJpbmcgKi8KICJjb25mbGljdCIgPSAi
Y29uZmxpY3QiOwogCisvKiBMYWJlbCBmb3IgdGhlIGF1dG8gZmlsbCBjb250YWN0cyBidXR0b24g
aW5zaWRlIGEgdGV4dCBmaWVsZC4gKi8KKyJjb250YWN0IGluZm8gYXV0byBmaWxsIiA9ICJjb250
YWN0IGluZm8gYXV0byBmaWxsIjsKKwogLyogQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRo
YXQgY29udGFpbnMgY29udGVudC4gKi8KICJjb250ZW50IGluZm9ybWF0aW9uIiA9ICJjb250ZW50
IGluZm9ybWF0aW9uIjsKIApAQCAtOTM0LDYgKzkzNyw5IEBACiAvKiBIVFRQIHJlc3VsdCBjb2Rl
IHN0cmluZyAqLwogInBhcnRpYWwgY29udGVudCIgPSAicGFydGlhbCBjb250ZW50IjsKIAorLyog
TGFiZWwgZm9yIHRoZSBhdXRvIGZpbGwgY3JlZGVudGlhbHMgYnV0dG9uIGluc2lkZSBhIHRleHQg
ZmllbGQuICovCisicGFzc3dvcmQgYXV0byBmaWxsIiA9ICJwYXNzd29yZCBhdXRvIGZpbGwiOwor
CiAvKiBWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgcmVxdWlyaW5n
IGEgY29uc3RyYWluZWQgdmFsdWUgYWNjb3JkaW5nIHRvIHBhdHRlcm4gKi8KICJwYXR0ZXJuIG1p
c21hdGNoIiA9ICJwYXR0ZXJuIG1pc21hdGNoIjsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4MjE5
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTYtMDMtMTYgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBWDogSW1wbGVtZW50IEF1dG9GaWxsIEF2YWlsYWJsZSBhdHRyaWJ1dGUgZm9yIGEg
dGV4dCBmaWVsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU1NTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2F1dG8tZmlsbC10eXBlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXV0by1maWxsLXR5cGVzLmh0bWw6IEFkZGVkLgorCiAy
MDE2LTAzLTE1ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgQVg6IGNlcnRhaW4gZWxlbWVudHMgbm90IGluY2x1ZGVkIGluIGFjY2Vzc2liaWxpdHkgdHJl
ZQpAQCAtMyw0ICsxMywxNCBAQAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU1NDgwCiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2RvdWJsZS1uZXN0ZWQtaW5saW5lLWVsZW1lbnQt
bWlzc2luZy1mcm9tLXRyZWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2RvdWJsZS1uZXN0ZWQtaW5saW5lLWVsZW1lbnQtbWlzc2luZy1mcm9tLXRyZWUuaHRt
bDogQWRkZWQuCisKKzIwMTYtMDMtMTUgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxl
LmNvbT4KKworICAgICAgICBBWDogY2VydGFpbiBlbGVtZW50cyBub3QgaW5jbHVkZWQgaW4gYWNj
ZXNzaWJpbGl0eSB0cmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTU0ODAKKwogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgogCkluZGV4
OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F1dG8tZmlsbC10eXBlcy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hdXRvLWZpbGwtdHlwZXMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9h
dXRvLWZpbGwtdHlwZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYg
QEAKKworVGhpcyB0ZXN0cyB0aGF0IHRoZSBhdXRvLWZpbGxlZCBidXR0b25zIHNob3cgdXAuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitJbml0aWFsIGF1dG8tZmlsbCBhdmFpbGFi
bGU6IGZhbHNlCitDb250YWN0IGJ1dHRvbiByb2xlOiBBWFJvbGU6IEFYQnV0dG9uCitDb250YWN0
IGJ1dHRvbiBsYWJlbDogQVhEZXNjcmlwdGlvbjogY29udGFjdCBpbmZvIGF1dG8gZmlsbAorQ3Jl
ZGVudGlhbHMgYnV0dG9uIHJvbGU6IEFYUm9sZTogQVhCdXR0b24KK0NyZWRlbnRpYWxzIGJ1dHRv
biBsYWJlbDogQVhEZXNjcmlwdGlvbjogcGFzc3dvcmQgYXV0byBmaWxsCitQb3N0IGF1dG8tZmls
bCBhdmFpbGFibGU6IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F1dG8tZmlsbC10
eXBlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXV0by1m
aWxsLXR5cGVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2F1dG8tZmlsbC10eXBlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKworPGlu
cHV0IHR5cGU9InRleHQiIHZhbHVlPSJoZWxsbyIgaWQ9InRleHRmaWVsZCI+CisKKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisK
KyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHRoZSBhdXRvLWZpbGxlZCBidXR0b25z
IHNob3cgdXAuIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7
CisgICAgICAgIHZhciB0ZXh0RmllbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dGZp
ZWxkIik7CisgICAgICAgIHZhciBheFRleHRGaWVsZCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dGZpZWxkIik7CisgICAgICAgIGRlYnVnKCJJbml0
aWFsIGF1dG8tZmlsbCBhdmFpbGFibGU6ICIgKyBheFRleHRGaWVsZC5ib29sQXR0cmlidXRlVmFs
dWUoIkFYVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSIpKTsKKworICAgICAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldFNob3dBdXRvRmlsbEJ1dHRvbihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dGZp
ZWxkIiksICJBdXRvRmlsbEJ1dHRvblR5cGVDb250YWN0cyIpOworICAgICAgICB2YXIgY29udGFj
dHNCdXR0b24gPSBheFRleHRGaWVsZC5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAgIGRlYnVnKCJD
b250YWN0IGJ1dHRvbiByb2xlOiAiICsgY29udGFjdHNCdXR0b24ucm9sZSk7CisgICAgICAgIGRl
YnVnKCJDb250YWN0IGJ1dHRvbiBsYWJlbDogIiArIGNvbnRhY3RzQnV0dG9uLmRlc2NyaXB0aW9u
KTsKKworICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFNob3dBdXRvRmlsbEJ1dHRvbihkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dGZpZWxkIiksICJBdXRvRmlsbEJ1dHRvblR5cGVDcmVk
ZW50aWFscyIpOworICAgICAgICB2YXIgY3JlZGVudGlhbHNCdXR0b24gPSBheFRleHRGaWVsZC5j
aGlsZEF0SW5kZXgoMSk7CisgICAgICAgIGRlYnVnKCJDcmVkZW50aWFscyBidXR0b24gcm9sZTog
IiArIGNyZWRlbnRpYWxzQnV0dG9uLnJvbGUpOworICAgICAgICBkZWJ1ZygiQ3JlZGVudGlhbHMg
YnV0dG9uIGxhYmVsOiAiICsgY3JlZGVudGlhbHNCdXR0b24uZGVzY3JpcHRpb24pOworCisgICAg
ICAgIGRlYnVnKCJQb3N0IGF1dG8tZmlsbCBhdmFpbGFibGU6ICIgKyBheFRleHRGaWVsZC5ib29s
QXR0cmlidXRlVmFsdWUoIkFYVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSIpKTsKKyAgICB9CisKKzwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274239</attachid>
            <date>2016-03-16 17:02:00 -0700</date>
            <delta_ts>2016-03-16 17:30:03 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13883</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE2LTAzLTE2ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEltcGxlbWVudCBB
dXRvRmlsbCBBdmFpbGFibGUgYXR0cmlidXRlIGZvciBhIHRleHQgZmllbGQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTU2NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSB0aGUgYXV0byBmaWxs
IGJ1dHRvbnMgdG8gdGhlIEFYIGhpZXJhcmNoeS4KKyAgICAgICAgQWRkIGFuIGF0dHJpYnV0ZSBm
b3IgdGhlIHRleHRmaWVsZCB0byBpbmZvcm0gd2hlbiB0aGUgYXV0byBmaWxsIGJ1dHRvbiBpcyBh
dmFpbGFibGUuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9hdXRvLWZpbGwtdHlwZXMu
aHRtbAorCisgICAgICAgICogRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1ZhbHVlQXV0b2ZpbGxlZCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXNzd29yZEZpZWxkVmFsdWUpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbik6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsaW1pdExlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjphdXRvRmlsbEJ1dHRvblR5cGVUb0FjY2Vzc2liaWxpdHlMYWJlbCk6CisgICAgICAgIChX
ZWJDb3JlOjphdXRvRmlsbEJ1dHRvblR5cGVUb0F1dG9GaWxsQnV0dG9uUHNldWRvQ2xhc3NOYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlQXV0b0ZpbGxC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVBdXRv
RmlsbEJ1dHRvbik6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBWExpc3RJdGVtQWN0aW9uVmVyYik6CisgICAgICAgIChXZWJDb3Jl
OjpBWEF1dG9GaWxsQ3JlZGVudGlhbHNMYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpBWEF1dG9G
aWxsQ29udGFjdHNMYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpBWEFSSUFDb250ZW50R3JvdXBU
ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisKIDIwMTYtMDMt
MTYgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgTlNT
cGVsbENoZWNrZXIgc3BlbGxDaGVja2luZyBtZXRob2RzIHdpdGggdGhlIGN1cnJlbnQgaW5zZXJ0
aW9uIHBvaW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmNwcAkocmV2aXNpb24gMTk4MjE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1NCw2ICs2NTQsMTYgQEAKIH0K
ICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCitTdHJpbmcgQVhBdXRvRmlsbENyZWRlbnRpYWxz
TGFiZWwoKQoreworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJwYXNzd29yZCBhdXRvIGZpbGwi
LCAiTGFiZWwgZm9yIHRoZSBhdXRvIGZpbGwgY3JlZGVudGlhbHMgYnV0dG9uIGluc2lkZSBhIHRl
eHQgZmllbGQuIik7Cit9CisKK1N0cmluZyBBWEF1dG9GaWxsQ29udGFjdHNMYWJlbCgpCit7Cisg
ICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoImNvbnRhY3QgaW5mbyBhdXRvIGZpbGwiLCAiTGFiZWwg
Zm9yIHRoZSBhdXRvIGZpbGwgY29udGFjdHMgYnV0dG9uIGluc2lkZSBhIHRleHQgZmllbGQuIik7
Cit9CisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBTdHJpbmcgQVhBUklBQ29udGVudEdyb3Vw
VGV4dChjb25zdCBTdHJpbmcmIGFyaWFUeXBlKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAkocmV2aXNpb24gMTk4MjE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODMs
NiArMTgzLDkgQEAKICAgICBTdHJpbmcgQVhBUklBQ29udGVudEdyb3VwVGV4dChjb25zdCBTdHJp
bmcmIGFyaWFUeXBlKTsKICAgICBTdHJpbmcgQVhIb3Jpem9udGFsUnVsZURlc2NyaXB0aW9uVGV4
dCgpOwogI2VuZGlmCisgICAgCisgICAgU3RyaW5nIEFYQXV0b0ZpbGxDcmVkZW50aWFsc0xhYmVs
KCk7CisgICAgU3RyaW5nIEFYQXV0b0ZpbGxDb250YWN0c0xhYmVsKCk7CiAKICAgICBTdHJpbmcg
bWlzc2luZ1BsdWdpblRleHQoKTsKICAgICBTdHJpbmcgY3Jhc2hlZFBsdWdpblRleHQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAJKHJldmlzaW9u
IDE5ODIxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50Lmgi
CisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHls
ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQu
aCIKQEAgLTM5OSw2ICs0MDAsMjAgQEAKICAgICByZXR1cm4gc3RyaW5nLmxlZnQobmV3TGVuZ3Ro
KTsKIH0KIAorc3RhdGljIFN0cmluZyBhdXRvRmlsbEJ1dHRvblR5cGVUb0FjY2Vzc2liaWxpdHlM
YWJlbChBdXRvRmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25UeXBlKQoreworICAgIHN3aXRj
aCAoYXV0b0ZpbGxCdXR0b25UeXBlKSB7CisgICAgY2FzZSBBdXRvRmlsbEJ1dHRvblR5cGU6OkNv
bnRhY3RzOgorICAgICAgICByZXR1cm4gQVhBdXRvRmlsbENvbnRhY3RzTGFiZWwoKTsKKyAgICBj
YXNlIEF1dG9GaWxsQnV0dG9uVHlwZTo6Q3JlZGVudGlhbHM6CisgICAgICAgIHJldHVybiBBWEF1
dG9GaWxsQ3JlZGVudGlhbHNMYWJlbCgpOworICAgIGRlZmF1bHQ6CisgICAgY2FzZSBBdXRvRmls
bEJ1dHRvblR5cGU6Ok5vbmU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gQXRvbWljU3RyaW5nKCk7CisgICAgfQorfQorICAgIAogc3RhdGljIEF0b21pY1N0
cmluZyBhdXRvRmlsbEJ1dHRvblR5cGVUb0F1dG9GaWxsQnV0dG9uUHNldWRvQ2xhc3NOYW1lKEF1
dG9GaWxsQnV0dG9uVHlwZSBhdXRvRmlsbEJ1dHRvblR5cGUpCiB7CiAgICAgQXRvbWljU3RyaW5n
IHBzZXVkb0NsYXNzTmFtZTsKQEAgLTY0OCw2ICs2NjMsOCBAQAogCiAgICAgbV9hdXRvRmlsbEJ1
dHRvbiA9IEF1dG9GaWxsQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS5kb2N1bWVudCgp
LCAqdGhpcyk7CiAgICAgbV9hdXRvRmlsbEJ1dHRvbi0+c2V0UHNldWRvKGF1dG9GaWxsQnV0dG9u
VHlwZVRvQXV0b0ZpbGxCdXR0b25Qc2V1ZG9DbGFzc05hbWUoYXV0b0ZpbGxCdXR0b25UeXBlKSk7
CisgICAgbV9hdXRvRmlsbEJ1dHRvbi0+c2V0QXR0cmlidXRlKHJvbGVBdHRyLCAiYnV0dG9uIik7
CisgICAgbV9hdXRvRmlsbEJ1dHRvbi0+c2V0QXR0cmlidXRlKGFyaWFfbGFiZWxBdHRyLCBhdXRv
RmlsbEJ1dHRvblR5cGVUb0FjY2Vzc2liaWxpdHlMYWJlbChhdXRvRmlsbEJ1dHRvblR5cGUpKTsK
ICAgICBtX2NvbnRhaW5lci0+YXBwZW5kQ2hpbGQoKm1fYXV0b0ZpbGxCdXR0b24sIElHTk9SRV9F
WENFUFRJT04pOwogfQogCkBAIC02NjIsOSArNjc5LDEwIEBACiAKICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBhdHRyaWJ1dGUgPSBtX2F1dG9GaWxsQnV0dG9uLT5mYXN0R2V0QXR0cmlidXRl
KHBzZXVkb0F0dHIpOwogICAgICAgICBib29sIHNob3VsZFVwZGF0ZUF1dG9GaWxsQnV0dG9uVHlw
ZSA9IGlzQXV0b0ZpbGxCdXR0b25UeXBlQ2hhbmdlZChhdHRyaWJ1dGUsIGVsZW1lbnQoKS5hdXRv
RmlsbEJ1dHRvblR5cGUoKSk7Ci0gICAgICAgIGlmIChzaG91bGRVcGRhdGVBdXRvRmlsbEJ1dHRv
blR5cGUpCisgICAgICAgIGlmIChzaG91bGRVcGRhdGVBdXRvRmlsbEJ1dHRvblR5cGUpIHsKICAg
ICAgICAgICAgIG1fYXV0b0ZpbGxCdXR0b24tPnNldFBzZXVkbyhhdXRvRmlsbEJ1dHRvblR5cGVU
b0F1dG9GaWxsQnV0dG9uUHNldWRvQ2xhc3NOYW1lKGVsZW1lbnQoKS5hdXRvRmlsbEJ1dHRvblR5
cGUoKSkpOwotCisgICAgICAgICAgICBtX2F1dG9GaWxsQnV0dG9uLT5zZXRBdHRyaWJ1dGUoYXJp
YV9sYWJlbEF0dHIsIGF1dG9GaWxsQnV0dG9uVHlwZVRvQWNjZXNzaWJpbGl0eUxhYmVsKGVsZW1l
bnQoKS5hdXRvRmlsbEJ1dHRvblR5cGUoKSkpOworICAgICAgICB9CiAgICAgICAgIG1fYXV0b0Zp
bGxCdXR0b24tPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NW
YWx1ZUJsb2NrLCB0cnVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZpc2lvbiAxOTgyMTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1NiwxMCBAQAogI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlWYWx1ZUF1dG9maWxsZWRBdHRyaWJ1dGUgQCJBWFZhbHVlQXV0b2ZpbGxlZCIK
ICNlbmRpZgogCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVZhbHVlQXV0b2ZpbGxBdmFpbGFibGVB
dHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VmFsdWVBdXRvZmlsbEF2YWlsYWJsZUF0
dHJpYnV0ZSBAIkFYVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSIKKyNlbmRpZgorCiAjaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eUxhbmd1YWdlQXR0cmlidXRlCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUxh
bmd1YWdlQXR0cmlidXRlIEAiQVhMYW5ndWFnZSIKICNlbmRpZgpAQCAtMzE5Niw2ICszMjAwLDkg
QEAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eVBsYWNlaG9sZGVyVmFsdWVBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gbV9vYmplY3QtPnBs
YWNlaG9sZGVyVmFsdWUoKTsKIAorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdXRvZmlsbEF2YWlsYWJsZUF0dHJpYnV0ZV0pCisgICAg
ICAgIHJldHVybiBAKG1fb2JqZWN0LT5pc1ZhbHVlQXV0b2ZpbGxBdmFpbGFibGUoKSk7CisgICAg
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlW
YWx1ZUF1dG9maWxsZWRBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gQChtX29iamVjdC0+aXNW
YWx1ZUF1dG9maWxsZWQoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24g
MTk4MjE5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk3Nyw2ICsyOTc3LDkgQEAKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8
SFRNTElucHV0RWxlbWVudD4oKm5vZGUpOworICAgIGlmIChIVE1MRWxlbWVudCogYXV0b0ZpbGxF
bGVtZW50ID0gaW5wdXQuYXV0b0ZpbGxCdXR0b25FbGVtZW50KCkpCisgICAgICAgIG1fY2hpbGRy
ZW4uYXBwZW5kKGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoYXV0b0ZpbGxFbGVtZW50KSk7
CisgICAgCiAgICAgSFRNTEVsZW1lbnQqIHNwaW5CdXR0b25FbGVtZW50ID0gaW5wdXQuaW5uZXJT
cGluQnV0dG9uRWxlbWVudCgpOwogICAgIGlmICghaXM8U3BpbkJ1dHRvbkVsZW1lbnQ+KHNwaW5C
dXR0b25FbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDE5ODIx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC04OTEsNiArODkxLDcgQEAKIAogICAgIHZpcnR1YWwgU3RyaW5n
IHBhc3N3b3JkRmllbGRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgYm9v
bCBpc1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0OworICAgIGJvb2wgaXNWYWx1ZUF1dG9maWxsQXZh
aWxhYmxlKCkgY29uc3Q7CiAgICAgCiAgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgdG8gZ2V0
IGFsbCBpdHMgcm93cy4KICAgICB2b2lkIGFyaWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMTk4MjE5KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjE5Nyw2ICsyMTk3LDE4IEBACiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAgICAgCiti
b29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSgpIGNvbnN0
Cit7CisgICAgaWYgKCFpc05hdGl2ZVRleHRDb250cm9sKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOworICAgIGlmICghbm9kZSB8
fCAhaXM8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKS5hdXRvRmls
bEJ1dHRvblR5cGUoKSAhPSBBdXRvRmlsbEJ1dHRvblR5cGU6Ok5vbmU7Cit9CisgICAgCiBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVmFsdWVBdXRvZmlsbGVkKCkgY29uc3QKIHsKICAgICBp
ZiAoIWlzTmF0aXZlVGV4dENvbnRyb2woKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0ay5jcHAJKHJldmlzaW9uIDE5ODIxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDU2LDYgKzQ1NiwxNiBAQAogICAgIHJldHVybiBTdHJpbmc6OmZy
b21VVEY4KF8oImNhbmNlbCIpKTsKIH0KIAorU3RyaW5nIEFYQXV0b0ZpbGxDcmVkZW50aWFsc0xh
YmVsKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJwYXNzd29yZCBhdXRvIGZp
bGwiKSk7Cit9CisKK1N0cmluZyBBWEF1dG9GaWxsQ29udGFjdHNMYWJlbCgpCit7CisgICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiY29udGFjdCBpbmZvIGF1dG8gZmlsbCIpKTsKK30KKyAg
ICAKIFN0cmluZyBBWEJ1dHRvbkFjdGlvblZlcmIoKQogewogICAgIHJldHVybiBTdHJpbmc6OmZy
b21VVEY4KF8oInByZXNzIikpOwpJbmRleDogU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9M
b2NhbGl6YWJsZS5zdHJpbmdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gu
bHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwkocmV2aXNpb24gMTk4MjE5KQorKysgU291cmNlL1dl
YkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCSh3b3JraW5nIGNvcHkpCkBA
IC03NjAsNiArNzYwLDkgQEAKIC8qIEhUVFAgcmVzdWx0IGNvZGUgc3RyaW5nICovCiAiY29uZmxp
Y3QiID0gImNvbmZsaWN0IjsKIAorLyogTGFiZWwgZm9yIHRoZSBhdXRvIGZpbGwgY29udGFjdHMg
YnV0dG9uIGluc2lkZSBhIHRleHQgZmllbGQuICovCisiY29udGFjdCBpbmZvIGF1dG8gZmlsbCIg
PSAiY29udGFjdCBpbmZvIGF1dG8gZmlsbCI7CisKIC8qIEFuIEFSSUEgYWNjZXNzaWJpbGl0eSBn
cm91cCB0aGF0IGNvbnRhaW5zIGNvbnRlbnQuICovCiAiY29udGVudCBpbmZvcm1hdGlvbiIgPSAi
Y29udGVudCBpbmZvcm1hdGlvbiI7CiAKQEAgLTkzNCw2ICs5MzcsOSBAQAogLyogSFRUUCByZXN1
bHQgY29kZSBzdHJpbmcgKi8KICJwYXJ0aWFsIGNvbnRlbnQiID0gInBhcnRpYWwgY29udGVudCI7
CiAKKy8qIExhYmVsIGZvciB0aGUgYXV0byBmaWxsIGNyZWRlbnRpYWxzIGJ1dHRvbiBpbnNpZGUg
YSB0ZXh0IGZpZWxkLiAqLworInBhc3N3b3JkIGF1dG8gZmlsbCIgPSAicGFzc3dvcmQgYXV0byBm
aWxsIjsKKwogLyogVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHJl
cXVpcmluZyBhIGNvbnN0cmFpbmVkIHZhbHVlIGFjY29yZGluZyB0byBwYXR0ZXJuICovCiAicGF0
dGVybiBtaXNtYXRjaCIgPSAicGF0dGVybiBtaXNtYXRjaCI7CiAKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDE5ODIxOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDE2LTAzLTE2ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5j
b20+CisKKyAgICAgICAgQVg6IEltcGxlbWVudCBBdXRvRmlsbCBBdmFpbGFibGUgYXR0cmlidXRl
IGZvciBhIHRleHQgZmllbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NTU2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdXRvLWZpbGwtdHlwZXMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F1dG8tZmlsbC10eXBlcy5odG1sOiBBZGRl
ZC4KKwogMjAxNi0wMy0xNSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgog
CiAgICAgICAgIEFYOiBjZXJ0YWluIGVsZW1lbnRzIG5vdCBpbmNsdWRlZCBpbiBhY2Nlc3NpYmls
aXR5IHRyZWUKQEAgLTMsNCArMTMsMTQgQEAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NTQ4MAogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9kb3VibGUtbmVzdGVkLWlubGluZS1l
bGVtZW50LW1pc3NpbmctZnJvbS10cmVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9kb3VibGUtbmVzdGVkLWlubGluZS1lbGVtZW50LW1pc3NpbmctZnJvbS10
cmVlLmh0bWw6IEFkZGVkLgorCisyMDE2LTAzLTE1ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFj
aEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNlcnRhaW4gZWxlbWVudHMgbm90IGluY2x1ZGVk
IGluIGFjY2Vzc2liaWxpdHkgdHJlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1NDgwCisKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4K
IApJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hdXRvLWZpbGwtdHlwZXMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXV0by1maWxs
LXR5cGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvYXV0by1maWxsLXR5cGVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE2IEBACisKK1RoaXMgdGVzdHMgdGhhdCB0aGUgYXV0by1maWxsZWQgYnV0dG9ucyBzaG93
IHVwLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworSW5pdGlhbCBhdXRvLWZpbGwg
YXZhaWxhYmxlOiBmYWxzZQorQ29udGFjdCBidXR0b24gcm9sZTogQVhSb2xlOiBBWEJ1dHRvbgor
Q29udGFjdCBidXR0b24gbGFiZWw6IEFYRGVzY3JpcHRpb246IGNvbnRhY3QgaW5mbyBhdXRvIGZp
bGwKK0NyZWRlbnRpYWxzIGJ1dHRvbiByb2xlOiBBWFJvbGU6IEFYQnV0dG9uCitDcmVkZW50aWFs
cyBidXR0b24gbGFiZWw6IEFYRGVzY3JpcHRpb246IHBhc3N3b3JkIGF1dG8gZmlsbAorUG9zdCBh
dXRvLWZpbGwgYXZhaWxhYmxlOiB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hdXRv
LWZpbGwtdHlwZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2F1dG8tZmlsbC10eXBlcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9hdXRvLWZpbGwtdHlwZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQw
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+
CisKKzxpbnB1dCB0eXBlPSJ0ZXh0IiB2YWx1ZT0iaGVsbG8iIGlkPSJ0ZXh0ZmllbGQiPgorCis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2Ny
aXB0PgorCisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCB0aGUgYXV0by1maWxsZWQg
YnV0dG9ucyBzaG93IHVwLiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgeworICAgICAgICB2YXIgdGV4dEZpZWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRleHRmaWVsZCIpOworICAgICAgICB2YXIgYXhUZXh0RmllbGQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHRmaWVsZCIpOworICAgICAgICBkZWJ1
ZygiSW5pdGlhbCBhdXRvLWZpbGwgYXZhaWxhYmxlOiAiICsgYXhUZXh0RmllbGQuYm9vbEF0dHJp
YnV0ZVZhbHVlKCJBWFZhbHVlQXV0b2ZpbGxBdmFpbGFibGUiKSk7CisKKyAgICAgICAgd2luZG93
LmludGVybmFscy5zZXRTaG93QXV0b0ZpbGxCdXR0b24oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRleHRmaWVsZCIpLCAiQXV0b0ZpbGxCdXR0b25UeXBlQ29udGFjdHMiKTsKKyAgICAgICAgdmFy
IGNvbnRhY3RzQnV0dG9uID0gYXhUZXh0RmllbGQuY2hpbGRBdEluZGV4KDEpOworICAgICAgICBk
ZWJ1ZygiQ29udGFjdCBidXR0b24gcm9sZTogIiArIGNvbnRhY3RzQnV0dG9uLnJvbGUpOworICAg
ICAgICBkZWJ1ZygiQ29udGFjdCBidXR0b24gbGFiZWw6ICIgKyBjb250YWN0c0J1dHRvbi5kZXNj
cmlwdGlvbik7CisKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXRTaG93QXV0b0ZpbGxCdXR0
b24oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRmaWVsZCIpLCAiQXV0b0ZpbGxCdXR0b25U
eXBlQ3JlZGVudGlhbHMiKTsKKyAgICAgICAgdmFyIGNyZWRlbnRpYWxzQnV0dG9uID0gYXhUZXh0
RmllbGQuY2hpbGRBdEluZGV4KDEpOworICAgICAgICBkZWJ1ZygiQ3JlZGVudGlhbHMgYnV0dG9u
IHJvbGU6ICIgKyBjcmVkZW50aWFsc0J1dHRvbi5yb2xlKTsKKyAgICAgICAgZGVidWcoIkNyZWRl
bnRpYWxzIGJ1dHRvbiBsYWJlbDogIiArIGNyZWRlbnRpYWxzQnV0dG9uLmRlc2NyaXB0aW9uKTsK
KworICAgICAgICBkZWJ1ZygiUG9zdCBhdXRvLWZpbGwgYXZhaWxhYmxlOiAiICsgYXhUZXh0Rmll
bGQuYm9vbEF0dHJpYnV0ZVZhbHVlKCJBWFZhbHVlQXV0b2ZpbGxBdmFpbGFibGUiKSk7CisgICAg
fQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274245</attachid>
            <date>2016-03-16 17:30:03 -0700</date>
            <delta_ts>2016-03-17 09:25:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14494</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODMwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE2LTAzLTE2ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEltcGxlbWVudCBB
dXRvRmlsbCBBdmFpbGFibGUgYXR0cmlidXRlIGZvciBhIHRleHQgZmllbGQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTU2NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSB0aGUgYXV0byBmaWxs
IGJ1dHRvbnMgdG8gdGhlIEFYIGhpZXJhcmNoeS4KKyAgICAgICAgQWRkIGFuIGF0dHJpYnV0ZSBm
b3IgdGhlIHRleHRmaWVsZCB0byBpbmZvcm0gd2hlbiB0aGUgYXV0byBmaWxsIGJ1dHRvbiBpcyBh
dmFpbGFibGUuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9hdXRvLWZpbGwtdHlwZXMu
aHRtbAorCisgICAgICAgICogRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjplbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1ZhbHVlQXV0b2ZpbGxlZCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXNzd29yZEZpZWxkVmFsdWUpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbik6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToKKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsaW1pdExlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjphdXRvRmlsbEJ1dHRvblR5cGVUb0FjY2Vzc2liaWxpdHlMYWJlbCk6CisgICAgICAgIChX
ZWJDb3JlOjphdXRvRmlsbEJ1dHRvblR5cGVUb0F1dG9GaWxsQnV0dG9uUHNldWRvQ2xhc3NOYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlQXV0b0ZpbGxC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVBdXRv
RmlsbEJ1dHRvbik6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBWExpc3RJdGVtQWN0aW9uVmVyYik6CisgICAgICAgIChXZWJDb3Jl
OjpBWEF1dG9GaWxsQ3JlZGVudGlhbHNMYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpBWEF1dG9G
aWxsQ29udGFjdHNMYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpBWEFSSUFDb250ZW50R3JvdXBU
ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisKIDIwMTYtMDMt
MTYgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgTlNT
cGVsbENoZWNrZXIgc3BlbGxDaGVja2luZyBtZXRob2RzIHdpdGggdGhlIGN1cnJlbnQgaW5zZXJ0
aW9uIHBvaW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmNwcAkocmV2aXNpb24gMTk4MjE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1NCw2ICs2NTQsMTYgQEAKIH0K
ICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCitTdHJpbmcgQVhBdXRvRmlsbENyZWRlbnRpYWxz
TGFiZWwoKQoreworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJwYXNzd29yZCBhdXRvIGZpbGwi
LCAiTGFiZWwgZm9yIHRoZSBhdXRvIGZpbGwgY3JlZGVudGlhbHMgYnV0dG9uIGluc2lkZSBhIHRl
eHQgZmllbGQuIik7Cit9CisKK1N0cmluZyBBWEF1dG9GaWxsQ29udGFjdHNMYWJlbCgpCit7Cisg
ICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoImNvbnRhY3QgaW5mbyBhdXRvIGZpbGwiLCAiTGFiZWwg
Zm9yIHRoZSBhdXRvIGZpbGwgY29udGFjdHMgYnV0dG9uIGluc2lkZSBhIHRleHQgZmllbGQuIik7
Cit9CisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBTdHJpbmcgQVhBUklBQ29udGVudEdyb3Vw
VGV4dChjb25zdCBTdHJpbmcmIGFyaWFUeXBlKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAkocmV2aXNpb24gMTk4MjE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODMs
NiArMTgzLDkgQEAKICAgICBTdHJpbmcgQVhBUklBQ29udGVudEdyb3VwVGV4dChjb25zdCBTdHJp
bmcmIGFyaWFUeXBlKTsKICAgICBTdHJpbmcgQVhIb3Jpem9udGFsUnVsZURlc2NyaXB0aW9uVGV4
dCgpOwogI2VuZGlmCisgICAgCisgICAgU3RyaW5nIEFYQXV0b0ZpbGxDcmVkZW50aWFsc0xhYmVs
KCk7CisgICAgU3RyaW5nIEFYQXV0b0ZpbGxDb250YWN0c0xhYmVsKCk7CiAKICAgICBTdHJpbmcg
bWlzc2luZ1BsdWdpblRleHQoKTsKICAgICBTdHJpbmcgY3Jhc2hlZFBsdWdpblRleHQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAJKHJldmlzaW9u
IDE5ODIxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50Lmgi
CisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHls
ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQu
aCIKQEAgLTM5OSw2ICs0MDAsMjAgQEAKICAgICByZXR1cm4gc3RyaW5nLmxlZnQobmV3TGVuZ3Ro
KTsKIH0KIAorc3RhdGljIFN0cmluZyBhdXRvRmlsbEJ1dHRvblR5cGVUb0FjY2Vzc2liaWxpdHlM
YWJlbChBdXRvRmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25UeXBlKQoreworICAgIHN3aXRj
aCAoYXV0b0ZpbGxCdXR0b25UeXBlKSB7CisgICAgY2FzZSBBdXRvRmlsbEJ1dHRvblR5cGU6OkNv
bnRhY3RzOgorICAgICAgICByZXR1cm4gQVhBdXRvRmlsbENvbnRhY3RzTGFiZWwoKTsKKyAgICBj
YXNlIEF1dG9GaWxsQnV0dG9uVHlwZTo6Q3JlZGVudGlhbHM6CisgICAgICAgIHJldHVybiBBWEF1
dG9GaWxsQ3JlZGVudGlhbHNMYWJlbCgpOworICAgIGRlZmF1bHQ6CisgICAgY2FzZSBBdXRvRmls
bEJ1dHRvblR5cGU6Ok5vbmU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gQXRvbWljU3RyaW5nKCk7CisgICAgfQorfQorICAgIAogc3RhdGljIEF0b21pY1N0
cmluZyBhdXRvRmlsbEJ1dHRvblR5cGVUb0F1dG9GaWxsQnV0dG9uUHNldWRvQ2xhc3NOYW1lKEF1
dG9GaWxsQnV0dG9uVHlwZSBhdXRvRmlsbEJ1dHRvblR5cGUpCiB7CiAgICAgQXRvbWljU3RyaW5n
IHBzZXVkb0NsYXNzTmFtZTsKQEAgLTY0OCw2ICs2NjMsOCBAQAogCiAgICAgbV9hdXRvRmlsbEJ1
dHRvbiA9IEF1dG9GaWxsQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS5kb2N1bWVudCgp
LCAqdGhpcyk7CiAgICAgbV9hdXRvRmlsbEJ1dHRvbi0+c2V0UHNldWRvKGF1dG9GaWxsQnV0dG9u
VHlwZVRvQXV0b0ZpbGxCdXR0b25Qc2V1ZG9DbGFzc05hbWUoYXV0b0ZpbGxCdXR0b25UeXBlKSk7
CisgICAgbV9hdXRvRmlsbEJ1dHRvbi0+c2V0QXR0cmlidXRlKHJvbGVBdHRyLCAiYnV0dG9uIik7
CisgICAgbV9hdXRvRmlsbEJ1dHRvbi0+c2V0QXR0cmlidXRlKGFyaWFfbGFiZWxBdHRyLCBhdXRv
RmlsbEJ1dHRvblR5cGVUb0FjY2Vzc2liaWxpdHlMYWJlbChhdXRvRmlsbEJ1dHRvblR5cGUpKTsK
ICAgICBtX2NvbnRhaW5lci0+YXBwZW5kQ2hpbGQoKm1fYXV0b0ZpbGxCdXR0b24sIElHTk9SRV9F
WENFUFRJT04pOwogfQogCkBAIC02NjIsOSArNjc5LDEwIEBACiAKICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBhdHRyaWJ1dGUgPSBtX2F1dG9GaWxsQnV0dG9uLT5mYXN0R2V0QXR0cmlidXRl
KHBzZXVkb0F0dHIpOwogICAgICAgICBib29sIHNob3VsZFVwZGF0ZUF1dG9GaWxsQnV0dG9uVHlw
ZSA9IGlzQXV0b0ZpbGxCdXR0b25UeXBlQ2hhbmdlZChhdHRyaWJ1dGUsIGVsZW1lbnQoKS5hdXRv
RmlsbEJ1dHRvblR5cGUoKSk7Ci0gICAgICAgIGlmIChzaG91bGRVcGRhdGVBdXRvRmlsbEJ1dHRv
blR5cGUpCisgICAgICAgIGlmIChzaG91bGRVcGRhdGVBdXRvRmlsbEJ1dHRvblR5cGUpIHsKICAg
ICAgICAgICAgIG1fYXV0b0ZpbGxCdXR0b24tPnNldFBzZXVkbyhhdXRvRmlsbEJ1dHRvblR5cGVU
b0F1dG9GaWxsQnV0dG9uUHNldWRvQ2xhc3NOYW1lKGVsZW1lbnQoKS5hdXRvRmlsbEJ1dHRvblR5
cGUoKSkpOwotCisgICAgICAgICAgICBtX2F1dG9GaWxsQnV0dG9uLT5zZXRBdHRyaWJ1dGUoYXJp
YV9sYWJlbEF0dHIsIGF1dG9GaWxsQnV0dG9uVHlwZVRvQWNjZXNzaWJpbGl0eUxhYmVsKGVsZW1l
bnQoKS5hdXRvRmlsbEJ1dHRvblR5cGUoKSkpOworICAgICAgICB9CiAgICAgICAgIG1fYXV0b0Zp
bGxCdXR0b24tPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NW
YWx1ZUJsb2NrLCB0cnVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZpc2lvbiAxOTgyMTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1NiwxMCBAQAogI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlWYWx1ZUF1dG9maWxsZWRBdHRyaWJ1dGUgQCJBWFZhbHVlQXV0b2ZpbGxlZCIK
ICNlbmRpZgogCisjaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVZhbHVlQXV0b2ZpbGxBdmFpbGFibGVB
dHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VmFsdWVBdXRvZmlsbEF2YWlsYWJsZUF0
dHJpYnV0ZSBAIkFYVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSIKKyNlbmRpZgorCiAjaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eUxhbmd1YWdlQXR0cmlidXRlCiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUxh
bmd1YWdlQXR0cmlidXRlIEAiQVhMYW5ndWFnZSIKICNlbmRpZgpAQCAtMzE5Niw2ICszMjAwLDkg
QEAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eVBsYWNlaG9sZGVyVmFsdWVBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gbV9vYmplY3QtPnBs
YWNlaG9sZGVyVmFsdWUoKTsKIAorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdXRvZmlsbEF2YWlsYWJsZUF0dHJpYnV0ZV0pCisgICAg
ICAgIHJldHVybiBAKG1fb2JqZWN0LT5pc1ZhbHVlQXV0b2ZpbGxBdmFpbGFibGUoKSk7CisgICAg
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlW
YWx1ZUF1dG9maWxsZWRBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gQChtX29iamVjdC0+aXNW
YWx1ZUF1dG9maWxsZWQoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24g
MTk4MjE5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk3Nyw2ICsyOTc3LDkgQEAKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZG93bmNhc3Q8
SFRNTElucHV0RWxlbWVudD4oKm5vZGUpOworICAgIGlmIChIVE1MRWxlbWVudCogYXV0b0ZpbGxF
bGVtZW50ID0gaW5wdXQuYXV0b0ZpbGxCdXR0b25FbGVtZW50KCkpCisgICAgICAgIG1fY2hpbGRy
ZW4uYXBwZW5kKGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoYXV0b0ZpbGxFbGVtZW50KSk7
CisgICAgCiAgICAgSFRNTEVsZW1lbnQqIHNwaW5CdXR0b25FbGVtZW50ID0gaW5wdXQuaW5uZXJT
cGluQnV0dG9uRWxlbWVudCgpOwogICAgIGlmICghaXM8U3BpbkJ1dHRvbkVsZW1lbnQ+KHNwaW5C
dXR0b25FbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDE5ODIx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC04OTEsNiArODkxLDcgQEAKIAogICAgIHZpcnR1YWwgU3RyaW5n
IHBhc3N3b3JkRmllbGRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgYm9v
bCBpc1ZhbHVlQXV0b2ZpbGxlZCgpIGNvbnN0OworICAgIGJvb2wgaXNWYWx1ZUF1dG9maWxsQXZh
aWxhYmxlKCkgY29uc3Q7CiAgICAgCiAgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgdG8gZ2V0
IGFsbCBpdHMgcm93cy4KICAgICB2b2lkIGFyaWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMTk4MjE5KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjE5Nyw2ICsyMTk3LDE4IEBACiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAgICAgCiti
b29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSgpIGNvbnN0
Cit7CisgICAgaWYgKCFpc05hdGl2ZVRleHRDb250cm9sKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOworICAgIGlmICghbm9kZSB8
fCAhaXM8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKS5hdXRvRmls
bEJ1dHRvblR5cGUoKSAhPSBBdXRvRmlsbEJ1dHRvblR5cGU6Ok5vbmU7Cit9CisgICAgCiBib29s
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVmFsdWVBdXRvZmlsbGVkKCkgY29uc3QKIHsKICAgICBp
ZiAoIWlzTmF0aXZlVGV4dENvbnRyb2woKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0ay5jcHAJKHJldmlzaW9uIDE5ODIxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDU2LDYgKzQ1NiwxNiBAQAogICAgIHJldHVybiBTdHJpbmc6OmZy
b21VVEY4KF8oImNhbmNlbCIpKTsKIH0KIAorU3RyaW5nIEFYQXV0b0ZpbGxDcmVkZW50aWFsc0xh
YmVsKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJwYXNzd29yZCBhdXRvIGZp
bGwiKSk7Cit9CisKK1N0cmluZyBBWEF1dG9GaWxsQ29udGFjdHNMYWJlbCgpCit7CisgICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiY29udGFjdCBpbmZvIGF1dG8gZmlsbCIpKTsKK30KKyAg
ICAKIFN0cmluZyBBWEJ1dHRvbkFjdGlvblZlcmIoKQogewogICAgIHJldHVybiBTdHJpbmc6OmZy
b21VVEY4KF8oInByZXNzIikpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0xv
Y2FsaXplZFN0cmluZ3NFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9Mb2NhbGl6ZWRTdHJpbmdzRWZsLmNwcAkocmV2aXNpb24gMTk4MjE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0xvY2FsaXplZFN0cmluZ3NFZmwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MDcsNyArNDA3LDE3IEBACiB7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoImNhbmNlbCIpOwogfQorICAgIAorU3RyaW5nIEFYQXV0b0ZpbGxDcmVkZW50aWFsc0xhYmVs
KCkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgicGFzc3dvcmQgYXV0byBmaWxsIik7
Cit9CiAKK1N0cmluZyBBWEF1dG9GaWxsQ29udGFjdHNMYWJlbCgpCit7CisgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoImNvbnRhY3QgaW5mbyBhdXRvIGZpbGwiKTsKK30KKwogU3RyaW5nIEFY
QnV0dG9uQWN0aW9uVmVyYigpCiB7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoInByZXNz
Iik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmlu
Z3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJs
ZS5zdHJpbmdzCShyZXZpc2lvbiAxOTgyMTkpCisrKyBTb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxw
cm9qL0xvY2FsaXphYmxlLnN0cmluZ3MJKHdvcmtpbmcgY29weSkKQEAgLTc2MCw2ICs3NjAsOSBA
QAogLyogSFRUUCByZXN1bHQgY29kZSBzdHJpbmcgKi8KICJjb25mbGljdCIgPSAiY29uZmxpY3Qi
OwogCisvKiBMYWJlbCBmb3IgdGhlIGF1dG8gZmlsbCBjb250YWN0cyBidXR0b24gaW5zaWRlIGEg
dGV4dCBmaWVsZC4gKi8KKyJjb250YWN0IGluZm8gYXV0byBmaWxsIiA9ICJjb250YWN0IGluZm8g
YXV0byBmaWxsIjsKKwogLyogQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgY29udGFp
bnMgY29udGVudC4gKi8KICJjb250ZW50IGluZm9ybWF0aW9uIiA9ICJjb250ZW50IGluZm9ybWF0
aW9uIjsKIApAQCAtOTM0LDYgKzkzNyw5IEBACiAvKiBIVFRQIHJlc3VsdCBjb2RlIHN0cmluZyAq
LwogInBhcnRpYWwgY29udGVudCIgPSAicGFydGlhbCBjb250ZW50IjsKIAorLyogTGFiZWwgZm9y
IHRoZSBhdXRvIGZpbGwgY3JlZGVudGlhbHMgYnV0dG9uIGluc2lkZSBhIHRleHQgZmllbGQuICov
CisicGFzc3dvcmQgYXV0byBmaWxsIiA9ICJwYXNzd29yZCBhdXRvIGZpbGwiOworCiAvKiBWYWxp
ZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgcmVxdWlyaW5nIGEgY29uc3Ry
YWluZWQgdmFsdWUgYWNjb3JkaW5nIHRvIHBhdHRlcm4gKi8KICJwYXR0ZXJuIG1pc21hdGNoIiA9
ICJwYXR0ZXJuIG1pc21hdGNoIjsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4MjE5KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYt
MDMtMTYgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBB
WDogSW1wbGVtZW50IEF1dG9GaWxsIEF2YWlsYWJsZSBhdHRyaWJ1dGUgZm9yIGEgdGV4dCBmaWVs
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NTY3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2F1dG8tZmlsbC10eXBlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvYXV0by1maWxsLXR5cGVzLmh0bWw6IEFkZGVkLgorCiAyMDE2LTAzLTE1
ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IGNl
cnRhaW4gZWxlbWVudHMgbm90IGluY2x1ZGVkIGluIGFjY2Vzc2liaWxpdHkgdHJlZQpAQCAtMyw0
ICsxMywxNCBAQAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU1NDgwCiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2RvdWJsZS1uZXN0ZWQtaW5saW5lLWVsZW1lbnQtbWlzc2luZy1m
cm9tLXRyZWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Rv
dWJsZS1uZXN0ZWQtaW5saW5lLWVsZW1lbnQtbWlzc2luZy1mcm9tLXRyZWUuaHRtbDogQWRkZWQu
CisKKzIwMTYtMDMtMTUgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBWDogY2VydGFpbiBlbGVtZW50cyBub3QgaW5jbHVkZWQgaW4gYWNjZXNzaWJpbGl0
eSB0cmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTU0ODAKKwogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgogCkluZGV4OiBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2F1dG8tZmlsbC10eXBlcy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hdXRvLWZpbGwtdHlwZXMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hdXRvLWZpbGwt
dHlwZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKKworVGhp
cyB0ZXN0cyB0aGF0IHRoZSBhdXRvLWZpbGxlZCBidXR0b25zIHNob3cgdXAuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitJbml0aWFsIGF1dG8tZmlsbCBhdmFpbGFibGU6IGZhbHNl
CitDb250YWN0IGJ1dHRvbiByb2xlOiBBWFJvbGU6IEFYQnV0dG9uCitDb250YWN0IGJ1dHRvbiBs
YWJlbDogQVhEZXNjcmlwdGlvbjogY29udGFjdCBpbmZvIGF1dG8gZmlsbAorQ3JlZGVudGlhbHMg
YnV0dG9uIHJvbGU6IEFYUm9sZTogQVhCdXR0b24KK0NyZWRlbnRpYWxzIGJ1dHRvbiBsYWJlbDog
QVhEZXNjcmlwdGlvbjogcGFzc3dvcmQgYXV0byBmaWxsCitQb3N0IGF1dG8tZmlsbCBhdmFpbGFi
bGU6IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F1dG8tZmlsbC10eXBlcy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXV0by1maWxsLXR5cGVz
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F1dG8tZmls
bC10eXBlcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKworPGlucHV0IHR5cGU9
InRleHQiIHZhbHVlPSJoZWxsbyIgaWQ9InRleHRmaWVsZCI+CisKKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHRoZSBhdXRvLWZpbGxlZCBidXR0b25zIHNob3cgdXAu
Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAg
IHZhciB0ZXh0RmllbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dGZpZWxkIik7Cisg
ICAgICAgIHZhciBheFRleHRGaWVsZCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgidGV4dGZpZWxkIik7CisgICAgICAgIGRlYnVnKCJJbml0aWFsIGF1dG8t
ZmlsbCBhdmFpbGFibGU6ICIgKyBheFRleHRGaWVsZC5ib29sQXR0cmlidXRlVmFsdWUoIkFYVmFs
dWVBdXRvZmlsbEF2YWlsYWJsZSIpKTsKKworICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFNo
b3dBdXRvRmlsbEJ1dHRvbihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dGZpZWxkIiksICJB
dXRvRmlsbEJ1dHRvblR5cGVDb250YWN0cyIpOworICAgICAgICB2YXIgY29udGFjdHNCdXR0b24g
PSBheFRleHRGaWVsZC5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAgIGRlYnVnKCJDb250YWN0IGJ1
dHRvbiByb2xlOiAiICsgY29udGFjdHNCdXR0b24ucm9sZSk7CisgICAgICAgIGRlYnVnKCJDb250
YWN0IGJ1dHRvbiBsYWJlbDogIiArIGNvbnRhY3RzQnV0dG9uLmRlc2NyaXB0aW9uKTsKKworICAg
ICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFNob3dBdXRvRmlsbEJ1dHRvbihkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGV4dGZpZWxkIiksICJBdXRvRmlsbEJ1dHRvblR5cGVDcmVkZW50aWFscyIp
OworICAgICAgICB2YXIgY3JlZGVudGlhbHNCdXR0b24gPSBheFRleHRGaWVsZC5jaGlsZEF0SW5k
ZXgoMSk7CisgICAgICAgIGRlYnVnKCJDcmVkZW50aWFscyBidXR0b24gcm9sZTogIiArIGNyZWRl
bnRpYWxzQnV0dG9uLnJvbGUpOworICAgICAgICBkZWJ1ZygiQ3JlZGVudGlhbHMgYnV0dG9uIGxh
YmVsOiAiICsgY3JlZGVudGlhbHNCdXR0b24uZGVzY3JpcHRpb24pOworCisgICAgICAgIGRlYnVn
KCJQb3N0IGF1dG8tZmlsbCBhdmFpbGFibGU6ICIgKyBheFRleHRGaWVsZC5ib29sQXR0cmlidXRl
VmFsdWUoIkFYVmFsdWVBdXRvZmlsbEF2YWlsYWJsZSIpKTsKKyAgICB9CisKKzwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="298733"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>