<?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>158456</bug_id>
          
          <creation_ts>2016-06-06 19:50:22 -0700</creation_ts>
          <short_desc>Make CrossThreadCopier more efficient (fewer copies!)</short_desc>
          <delta_ts>2016-06-08 17:55:01 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=158528</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1199852</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-06 19:50:22 -0700</bug_when>
    <thetext>Make CrossThreadCopier more efficient (less copies!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200329</commentid>
    <comment_count>1</comment_count>
      <attachid>280771</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-07 22:23:46 -0700</bug_when>
    <thetext>Created attachment 280771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200340</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-07 23:02:35 -0700</bug_when>
    <thetext>Yup, no good - I hit the ASSERT in DRT locally as the mac-debug EWS is seeing.

Exploring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200353</commentid>
    <comment_count>3</comment_count>
      <attachid>280777</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-07 23:31:30 -0700</bug_when>
    <thetext>Created attachment 280777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200367</commentid>
    <comment_count>4</comment_count>
      <attachid>280777</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-08 00:05:57 -0700</bug_when>
    <thetext>Comment on attachment 280777
Patch

This sounds good.  My first thoughts:
1) Could we add an API test similar to the RefLogger that counts how many constructors have been called?
2) It seems like this whole thing would be more elegant using variadic templates, but that is always hard to figure out.
3) It&apos;s way too late at night to be reviewing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200445</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-08 07:55:03 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 280777 [details]
&gt; Patch
&gt; 
&gt; This sounds good.  My first thoughts:
&gt; 1) Could we add an API test similar to the RefLogger that counts how many
&gt; constructors have been called?

Interesting idea. Will take a look.

&gt; 2) It seems like this whole thing would be more elegant using variadic
&gt; templates, but that is always hard to figure out.

Indeed, we started the CrossThreadCopier before variadic templates.

I was actually going to spend some time today working on a variadic template overhaul, just to see how it would look.

But that will be an experiment with no guarantee of success. I still want to get this overhaul in.

&gt; 3) It&apos;s way too late at night to be reviewing code.

I noticed, since you didn&apos;t actually review it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200463</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-08 09:17:15 -0700</bug_when>
    <thetext>I&apos;ll land an API test in https://bugs.webkit.org/show_bug.cgi?id=158528

And then update this patch with the changes to that api test!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200468</commentid>
    <comment_count>7</comment_count>
      <attachid>280810</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-08 09:34:13 -0700</bug_when>
    <thetext>Created attachment 280810
Patch w/test

Not marked as a patch yet, because this will rely on 158528 landing first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200489</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-08 10:30:36 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/201809</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280771</attachid>
            <date>2016-06-07 22:23:46 -0700</date>
            <delta_ts>2016-06-07 23:31:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158456-20160607222513.patch</filename>
            <type>text/plain</type>
            <size>13104</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ2N2FhMTY0NmI0NDYxOWY1OWNkOTc4
MTQ4MTZjNWI3ZDk1MjIwMjEuLjJiMjBiYzI4MTA2ZDU1Njg1YTg1YzE5MTI4ODMyMDJkNTg5NWRk
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTYtMDYtMDcgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgQ3Jvc3NUaHJlYWRDb3BpZXIgbW9yZSBlZmZp
Y2llbnQgKGxlc3MgY29waWVzISkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTg0NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQcmV2aW91c2x5LCB3ZSdkIHJ1biBhbGwgYXJndW1lbnRzIHRocm91Z2gg
Q3Jvc3NUaHJlYWRDb3BpZXIsIHRoZW4gaW1tZWRpYXRlbHkgbWFrZQorICAgICAgICBhbiB1bm5l
Y2Vzc2FyeSBjb3B5IG9mIHRoZSByZXN1bHQgZHVyaW5nIGxhbWJkYSBjYXB0dXJlLgorCisgICAg
ICAgIEluc3RlYWQsIHdlIHNob3VsZCBqdXN0IHB1dCB0aGUgQ3Jvc3NUaHJlYWRDb3BpZXIgZ2Vu
ZXJhdGVkIG9iamVjdHMgZGlyZWN0bHkgaW4gbGFtYmRhcywKKyAgICAgICAgd2hpY2ggYXJlIHRo
ZW4gY2FwdHVyZWQgYnkgTm9uY29weWFibGVGdW5jdGlvbnMuCisKKyAgICAgICAgVGhpcyByZWR1
Y2VzIHRoZSBudW1iZXIgb2YgY29uc3RydWN0b3IgY2FsbHMgcGVyIGFyZ3VtZW50IGZyb20gMiB0
byAxLgorCisgICAgICAgICogd3RmL0Nyb3NzVGhyZWFkVGFzay5oOgorICAgICAgICAoV1RGOjpj
cmVhdGVDcm9zc1RocmVhZFRhc2spOgorCiAyMDE2LTA2LTA0ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IHJpZCBvZiBXb3JrSXRlbVdpbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmggYi9Tb3VyY2UvV1RGL3d0
Zi9Dcm9zc1RocmVhZFRhc2suaAppbmRleCAxYTE2ZTNhMzkwZWFhNGJjM2YyMWMzMGJlMTlkM2M5
OGVjYzUxZjQ4Li5jZjBkZjEzOGE3ZTA0MzI2YTFmNTNjMDVlMjRhZGQzZTIwMTNhZDhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2suaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9Dcm9zc1RocmVhZFRhc2suaApAQCAtMzIsNiArMzIsMjQgQEAKIG5hbWVzcGFjZSBXVEYg
ewogCiBjbGFzcyBDcm9zc1RocmVhZFRhc2sgeworICAgIHRlbXBsYXRlPGNsYXNzIFQ+CisgICAg
ZnJpZW5kIENyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2soVCYsIHZvaWQgKFQ6
OiopKCkpOworICAgIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFAxLCBjbGFzcyBNUDE+CisgICAg
ZnJpZW5kIENyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2soVCYsIHZvaWQgKFQ6
OiopKE1QMSksIGNvbnN0IFAxJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgUDEsIGNs
YXNzIE1QMSwgY2xhc3MgUDIsIGNsYXNzIE1QMj4KKyAgICBmcmllbmQgQ3Jvc3NUaHJlYWRUYXNr
IGNyZWF0ZUNyb3NzVGhyZWFkVGFzayhUJiwgdm9pZCAoVDo6KikoTVAxLCBNUDIpLCBjb25zdCBQ
MSYsIGNvbnN0IFAyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgUDEsIGNsYXNzIE1Q
MSwgY2xhc3MgUDIsIGNsYXNzIE1QMiwgY2xhc3MgUDMsIGNsYXNzIE1QMz4KKyAgICBmcmllbmQg
Q3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzayhUJiwgdm9pZCAoVDo6KikoTVAx
LCBNUDIsIE1QMyksIGNvbnN0IFAxJiwgY29uc3QgUDImLCBjb25zdCBQMyYpOworICAgIHRlbXBs
YXRlPGNsYXNzIFQsIGNsYXNzIFAxLCBjbGFzcyBNUDEsIGNsYXNzIFAyLCBjbGFzcyBNUDIsIGNs
YXNzIFAzLCBjbGFzcyBNUDMsIGNsYXNzIFA0LCBjbGFzcyBNUDQ+CisgICAgZnJpZW5kIENyb3Nz
VGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2soVCYsIHZvaWQgKFQ6OiopKE1QMSwgTVAy
LCBNUDMsIE1QNCksIGNvbnN0IFAxJiwgY29uc3QgUDImLCBjb25zdCBQMyYsIGNvbnN0IFA0Jik7
CisgICAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgUDEsIGNsYXNzIE1QMSwgY2xhc3MgUDIsIGNs
YXNzIE1QMiwgY2xhc3MgUDMsIGNsYXNzIE1QMywgY2xhc3MgUDQsIGNsYXNzIE1QNCwgY2xhc3Mg
UDUsIGNsYXNzIE1QNT4KKyAgICBmcmllbmQgQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhy
ZWFkVGFzayhUJiwgdm9pZCAoVDo6KikoTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUpLCBjb25zdCBQ
MSYsIGNvbnN0IFAyJiwgY29uc3QgUDMmLCBjb25zdCBQNCYsIGNvbnN0IFA1Jik7CisgICAgdGVt
cGxhdGU8Y2xhc3MgVCwgY2xhc3MgUDEsIGNsYXNzIE1QMSwgY2xhc3MgUDIsIGNsYXNzIE1QMiwg
Y2xhc3MgUDMsIGNsYXNzIE1QMywgY2xhc3MgUDQsIGNsYXNzIE1QNCwgY2xhc3MgUDUsIGNsYXNz
IE1QNSwgY2xhc3MgUDYsIGNsYXNzIE1QNj4KKyAgICBmcmllbmQgQ3Jvc3NUaHJlYWRUYXNrIGNy
ZWF0ZUNyb3NzVGhyZWFkVGFzayhUJiwgdm9pZCAoVDo6KikoTVAxLCBNUDIsIE1QMywgTVA0LCBN
UDUsIE1QNiksIGNvbnN0IFAxJiwgY29uc3QgUDImLCBjb25zdCBQMyYsIGNvbnN0IFA0JiwgY29u
c3QgUDUmLCBjb25zdCBQNiYpOworICAgIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFAxLCBjbGFz
cyBNUDEsIGNsYXNzIFAyLCBjbGFzcyBNUDIsIGNsYXNzIFAzLCBjbGFzcyBNUDMsIGNsYXNzIFA0
LCBjbGFzcyBNUDQsIGNsYXNzIFA1LCBjbGFzcyBNUDUsIGNsYXNzIFA2LCBjbGFzcyBNUDYsIGNs
YXNzIFA3LCBjbGFzcyBNUDc+CisgICAgZnJpZW5kIENyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9z
c1RocmVhZFRhc2soVCYsIHZvaWQgKFQ6OiopKE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYs
IE1QNyksIGNvbnN0IFAxJiwgY29uc3QgUDImLCBjb25zdCBQMyYsIGNvbnN0IFA0JiwgY29uc3Qg
UDUmLCBjb25zdCBQNiYsIGNvbnN0IFA3Jik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3Mg
UDEsIGNsYXNzIE1QMSwgY2xhc3MgUDIsIGNsYXNzIE1QMiwgY2xhc3MgUDMsIGNsYXNzIE1QMywg
Y2xhc3MgUDQsIGNsYXNzIE1QNCwgY2xhc3MgUDUsIGNsYXNzIE1QNSwgY2xhc3MgUDYsIGNsYXNz
IE1QNiwgY2xhc3MgUDcsIGNsYXNzIE1QNywgY2xhc3MgUDgsIGNsYXNzIE1QOD4KKyAgICBmcmll
bmQgQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzayhUJiwgdm9pZCAoVDo6Kiko
TVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3LCBNUDgpLCBjb25zdCBQMSYsIGNvbnN0
IFAyJiwgY29uc3QgUDMmLCBjb25zdCBQNCYsIGNvbnN0IFA1JiwgY29uc3QgUDYmLCBjb25zdCBQ
NyYsIGNvbnN0IFA4Jik7CiBwdWJsaWM6CiAgICAgQ3Jvc3NUaHJlYWRUYXNrKCkgPSBkZWZhdWx0
OwogCkBAIC01MCwzNCArNjgsMTQgQEAgcHJvdGVjdGVkOgogICAgIE5vbmNvcHlhYmxlRnVuY3Rp
b248dm9pZCAoKT4gbV90YXNrRnVuY3Rpb247CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotY2xhc3MgQ3Jvc3NUaHJlYWRUYXNrSW1wbCBmaW5hbCA6
IHB1YmxpYyBDcm9zc1RocmVhZFRhc2sgewotcHVibGljOgotICAgIENyb3NzVGhyZWFkVGFza0lt
cGwoVCogY2FsbGVlLCB2b2lkIChUOjoqbWV0aG9kKShBcmd1bWVudHMuLi4pLCBBcmd1bWVudHMm
Ji4uLiBhcmd1bWVudHMpCi0gICAgewotICAgICAgICBtX3Rhc2tGdW5jdGlvbiA9IFtjYWxsZWUs
IG1ldGhvZCwgYXJndW1lbnRzLi4uXSB7Ci0gICAgICAgICAgICAoY2FsbGVlLT4qbWV0aG9kKShh
cmd1bWVudHMuLi4pOwotICAgICAgICB9OwotICAgIH0KLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+Ci1jbGFzcyBDcm9zc1RocmVhZFRhc2tTdGF0aWNJbXBsIGZpbmFsIDog
cHVibGljIENyb3NzVGhyZWFkVGFzayB7Ci1wdWJsaWM6Ci0gICAgQ3Jvc3NUaHJlYWRUYXNrU3Rh
dGljSW1wbCh2b2lkICgqbWV0aG9kKShBcmd1bWVudHMuLi4pLCBBcmd1bWVudHMmJi4uLiBhcmd1
bWVudHMpCi0gICAgewotICAgICAgICBtX3Rhc2tGdW5jdGlvbiA9IFttZXRob2QsIGFyZ3VtZW50
cy4uLl0gewotICAgICAgICAgICAgbWV0aG9kKGFyZ3VtZW50cy4uLik7Ci0gICAgICAgIH07Ci0g
ICAgfQotfTsKLQogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIENyb3NzVGhyZWFkVGFzayBjcmVhdGVD
cm9zc1RocmVhZFRhc2soCiAgICAgVCYgY2FsbGVlLAogICAgIHZvaWQgKFQ6OiptZXRob2QpKCkp
CiB7Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VD4oJmNhbGxlZSwgbWV0aG9kKTsK
KyAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsZWUgPSAmY2FsbGVlLCBtZXRob2RdKCkg
bXV0YWJsZSB7CisgICAgICAgIChjYWxsZWUtPiptZXRob2QpKCk7CisgICAgfSk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDE+CkBAIC04NiwxMCAr
ODQsMTAgQEAgQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICB2b2lk
IChUOjoqbWV0aG9kKShNUDEpLAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxKQogewotICAgIHJl
dHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMT4oCi0gICAgICAgICZjYWxsZWUsCi0gICAg
ICAgIG1ldGhvZCwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFy
YW1ldGVyMSkpOworICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2soW2NhbGxlZSA9ICZjYWxsZWUs
IG1ldGhvZCwKKyAgICAgICAgcDEgPSBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1l
dGVyMSldKCkgbXV0YWJsZSB7CisgICAgICAgIChjYWxsZWUtPiptZXRob2QpKHAxKTsKKyAgICB9
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwg
dHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMj4KQEAgLTk5LDEyICs5NywxMSBAQCBDcm9zc1RocmVh
ZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAog
ICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyKQogewotICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2tJ
bXBsPFQsIE1QMSwgTVAyPigKLSAgICAgICAgJmNhbGxlZSwKLSAgICAgICAgbWV0aG9kLAotICAg
ICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKLSAgICAg
ICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMikpOwotCisgICAg
cmV0dXJuIENyb3NzVGhyZWFkVGFzayhbY2FsbGVlID0gJmNhbGxlZSwgbWV0aG9kLAorICAgICAg
ICBwMSA9IENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKKyAgICAgICAg
cDIgPSBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMildKCkgbXV0YWJsZSB7
CisgICAgICAgIChjYWxsZWUtPiptZXRob2QpKHAxLCBwMik7CisgICAgfSk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0
eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDM+CkBAIC0xMTUsMTIgKzExMiwx
MiBAQCBDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIGNvbnN0IFAy
JiBwYXJhbWV0ZXIyLAogICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIHJldHVybiBD
cm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDM+KAotICAgICAgICAmY2FsbGVlLAot
ICAgICAgICBtZXRob2QsCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5
KHBhcmFtZXRlcjEpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShw
YXJhbWV0ZXIyKSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFy
YW1ldGVyMykpOworICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2soW2NhbGxlZSA9ICZjYWxsZWUs
IG1ldGhvZCwKKyAgICAgICAgcDEgPSBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1l
dGVyMSksCisgICAgICAgIHAyID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRl
cjIpLAorICAgICAgICBwMyA9IENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIz
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgKGNhbGxlZS0+Km1ldGhvZCkocDEsIHAyLCBwMyk7Cisg
ICAgfSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1l
IFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDM+CkBAIC0xMzAsMTEg
KzEyNywxMiBAQCBDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIGNv
bnN0IFAyJiBwYXJhbWV0ZXIyLAogICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzKQogewotICAgIHJl
dHVybiBDcm9zc1RocmVhZFRhc2tTdGF0aWNJbXBsPE1QMSwgTVAyLCBNUDM+KAotICAgICAgICBt
ZXRob2QsCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRl
cjEpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIy
KSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMykp
OworICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2soW21ldGhvZCwKKyAgICAgICAgcDEgPSBDcm9z
c1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCisgICAgICAgIHAyID0gQ3Jvc3NU
aHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAorICAgICAgICBwMyA9IENyb3NzVGhy
ZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgbWV0
aG9kKHAxLCBwMiwgcDMpOworICAgIH0pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFt
ZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0PgpAQCAtMTQ2LDEz
ICsxNDQsMTMgQEAgQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBj
b25zdCBQMyYgcGFyYW1ldGVyMywKICAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCkKIHsKLSAgICBy
ZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQ+KAotICAgICAg
ICAmY2FsbGVlLAotICAgICAgICBtZXRob2QsCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3Bp
ZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVy
PFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQ
Mz46OmNvcHkocGFyYW1ldGVyMyksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDQ+
Ojpjb3B5KHBhcmFtZXRlcjQpKTsKKyAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsZWUg
PSAmY2FsbGVlLCBtZXRob2QsCisgICAgICAgIHAxID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpj
b3B5KHBhcmFtZXRlcjEpLAorICAgICAgICBwMiA9IENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29w
eShwYXJhbWV0ZXIyKSwKKyAgICAgICAgcDMgPSBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHko
cGFyYW1ldGVyMyksCisgICAgICAgIHA0ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBh
cmFtZXRlcjQpXSgpIG11dGFibGUgeworICAgICAgICAoY2FsbGVlLT4qbWV0aG9kKShwMSwgcDIs
IHAzLCBwNCk7CisgICAgfSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAx
LCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0
eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBl
bmFtZSBNUDU+CkBAIC0xNjUsMTQgKzE2MywxNCBAQCBDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKAogICAgIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LAogICAgIGNvbnN0IFA1JiBw
YXJhbWV0ZXI1KQogewotICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAy
LCBNUDMsIE1QNCwgTVA1PigKLSAgICAgICAgJmNhbGxlZSwKLSAgICAgICAgbWV0aG9kLAotICAg
ICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKLSAgICAg
ICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCi0gICAgICAg
IFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLAotICAgICAgICBX
VEY6OkNyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSwKLSAgICAgICAgV1RG
OjpDcm9zc1RocmVhZENvcGllcjxQNT46OmNvcHkocGFyYW1ldGVyNSkpOworICAgIHJldHVybiBD
cm9zc1RocmVhZFRhc2soW2NhbGxlZSA9ICZjYWxsZWUsIG1ldGhvZCwKKyAgICAgICAgcDEgPSBD
cm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCisgICAgICAgIHAyID0gQ3Jv
c3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAorICAgICAgICBwMyA9IENyb3Nz
VGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwKKyAgICAgICAgcDQgPSBDcm9zc1Ro
cmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCisgICAgICAgIHA1ID0gQ3Jvc3NUaHJl
YWRDb3BpZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpXSgpIG11dGFibGUgeworICAgICAgICAoY2Fs
bGVlLT4qbWV0aG9kKShwMSwgcDIsIHAzLCBwNCwgcDUpOworICAgIH0pOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlw
ZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5h
bWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUg
TVA2PgpAQCAtMTg2LDE1ICsxODQsMTUgQEAgQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhy
ZWFkVGFzaygKICAgICBjb25zdCBQNSYgcGFyYW1ldGVyNSwKICAgICBjb25zdCBQNiYgcGFyYW1l
dGVyNikKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAz
LCBNUDQsIE1QNSwgTVA2PigKLSAgICAgICAgJmNhbGxlZSwKLSAgICAgICAgbWV0aG9kLAotICAg
ICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKLSAgICAg
ICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCi0gICAgICAg
IFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLAotICAgICAgICBX
VEY6OkNyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSwKLSAgICAgICAgV1RG
OjpDcm9zc1RocmVhZENvcGllcjxQNT46OmNvcHkocGFyYW1ldGVyNSksCi0gICAgICAgIFdURjo6
Q3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBhcmFtZXRlcjYpKTsKKyAgICByZXR1cm4gQ3Jv
c3NUaHJlYWRUYXNrKFtjYWxsZWUgPSAmY2FsbGVlLCBtZXRob2QsCisgICAgICAgIHAxID0gQ3Jv
c3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAorICAgICAgICBwMiA9IENyb3Nz
VGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKKyAgICAgICAgcDMgPSBDcm9zc1Ro
cmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksCisgICAgICAgIHA0ID0gQ3Jvc3NUaHJl
YWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAorICAgICAgICBwNSA9IENyb3NzVGhyZWFk
Q29waWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1KSwKKyAgICAgICAgcDYgPSBDcm9zc1RocmVhZENv
cGllcjxQNj46OmNvcHkocGFyYW1ldGVyNildKCkgbXV0YWJsZSB7CisgICAgICAgIChjYWxsZWUt
PiptZXRob2QpKHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYpOworICAgIH0pOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlw
ZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5h
bWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUg
TVA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUgTVA3PgpAQCAtMjA5LDE2ICsyMDcsMTYgQEAgQ3Jv
c3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBjb25zdCBQNiYgcGFyYW1l
dGVyNiwKICAgICBjb25zdCBQNyYgcGFyYW1ldGVyNykKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJl
YWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDc+KAotICAgICAg
ICAmY2FsbGVlLAotICAgICAgICBtZXRob2QsCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3Bp
ZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVy
PFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQ
Mz46OmNvcHkocGFyYW1ldGVyMyksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDQ+
Ojpjb3B5KHBhcmFtZXRlcjQpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFA1Pjo6
Y29weShwYXJhbWV0ZXI1KSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQNj46OmNv
cHkocGFyYW1ldGVyNiksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDc+Ojpjb3B5
KHBhcmFtZXRlcjcpKTsKKyAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsZWUgPSAmY2Fs
bGVlLCBtZXRob2QsCisgICAgICAgIHAxID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBh
cmFtZXRlcjEpLAorICAgICAgICBwMiA9IENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJh
bWV0ZXIyKSwKKyAgICAgICAgcDMgPSBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1l
dGVyMyksCisgICAgICAgIHA0ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRl
cjQpLAorICAgICAgICBwNSA9IENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1
KSwKKyAgICAgICAgcDYgPSBDcm9zc1RocmVhZENvcGllcjxQNj46OmNvcHkocGFyYW1ldGVyNiks
CisgICAgICAgIHA3ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+Ojpjb3B5KHBhcmFtZXRlcjcpXSgp
IG11dGFibGUgeworICAgICAgICAoY2FsbGVlLT4qbWV0aG9kKShwMSwgcDIsIHAzLCBwNCwgcDUs
IHA2LCBwNyk7CisgICAgfSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAx
LCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0
eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBl
bmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDYsIHR5cGVuYW1lIFA3LCB0eXBlbmFt
ZSBNUDcsIHR5cGVuYW1lIFA4LCB0eXBlbmFtZSBNUDg+CkBAIC0yMzQsMTcgKzIzMiwxNyBAQCBD
cm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIGNvbnN0IFA3JiBwYXJh
bWV0ZXI3LAogICAgIGNvbnN0IFA4JiBwYXJhbWV0ZXI4KQogewotICAgIHJldHVybiBDcm9zc1Ro
cmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4PigK
LSAgICAgICAgJmNhbGxlZSwKLSAgICAgICAgbWV0aG9kLAotICAgICAgICBXVEY6OkNyb3NzVGhy
ZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVh
ZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRD
b3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29w
aWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGll
cjxQNT46OmNvcHkocGFyYW1ldGVyNSksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8
UDY+Ojpjb3B5KHBhcmFtZXRlcjYpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFA3
Pjo6Y29weShwYXJhbWV0ZXI3KSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQOD46
OmNvcHkocGFyYW1ldGVyOCkpOworICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2soW2NhbGxlZSA9
ICZjYWxsZWUsIG1ldGhvZCwKKyAgICAgICAgcDEgPSBDcm9zc1RocmVhZENvcGllcjxQMT46OmNv
cHkocGFyYW1ldGVyMSksCisgICAgICAgIHAyID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5
KHBhcmFtZXRlcjIpLAorICAgICAgICBwMyA9IENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShw
YXJhbWV0ZXIzKSwKKyAgICAgICAgcDQgPSBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFy
YW1ldGVyNCksCisgICAgICAgIHA1ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHBhcmFt
ZXRlcjUpLAorICAgICAgICBwNiA9IENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29weShwYXJhbWV0
ZXI2KSwKKyAgICAgICAgcDcgPSBDcm9zc1RocmVhZENvcGllcjxQNz46OmNvcHkocGFyYW1ldGVy
NyksCisgICAgICAgIHA4ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDg+Ojpjb3B5KHBhcmFtZXRlcjgp
XSgpIG11dGFibGUgeworICAgICAgICAoY2FsbGVlLT4qbWV0aG9kKShwMSwgcDIsIHAzLCBwNCwg
cDUsIHA2LCBwNywgcDgpOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280777</attachid>
            <date>2016-06-07 23:31:30 -0700</date>
            <delta_ts>2016-06-08 17:55:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158456-20160607233256.patch</filename>
            <type>text/plain</type>
            <size>13324</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ2N2FhMTY0NmI0NDYxOWY1OWNkOTc4
MTQ4MTZjNWI3ZDk1MjIwMjEuLjJiMjBiYzI4MTA2ZDU1Njg1YTg1YzE5MTI4ODMyMDJkNTg5NWRk
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTYtMDYtMDcgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgQ3Jvc3NUaHJlYWRDb3BpZXIgbW9yZSBlZmZp
Y2llbnQgKGxlc3MgY29waWVzISkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTg0NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQcmV2aW91c2x5LCB3ZSdkIHJ1biBhbGwgYXJndW1lbnRzIHRocm91Z2gg
Q3Jvc3NUaHJlYWRDb3BpZXIsIHRoZW4gaW1tZWRpYXRlbHkgbWFrZQorICAgICAgICBhbiB1bm5l
Y2Vzc2FyeSBjb3B5IG9mIHRoZSByZXN1bHQgZHVyaW5nIGxhbWJkYSBjYXB0dXJlLgorCisgICAg
ICAgIEluc3RlYWQsIHdlIHNob3VsZCBqdXN0IHB1dCB0aGUgQ3Jvc3NUaHJlYWRDb3BpZXIgZ2Vu
ZXJhdGVkIG9iamVjdHMgZGlyZWN0bHkgaW4gbGFtYmRhcywKKyAgICAgICAgd2hpY2ggYXJlIHRo
ZW4gY2FwdHVyZWQgYnkgTm9uY29weWFibGVGdW5jdGlvbnMuCisKKyAgICAgICAgVGhpcyByZWR1
Y2VzIHRoZSBudW1iZXIgb2YgY29uc3RydWN0b3IgY2FsbHMgcGVyIGFyZ3VtZW50IGZyb20gMiB0
byAxLgorCisgICAgICAgICogd3RmL0Nyb3NzVGhyZWFkVGFzay5oOgorICAgICAgICAoV1RGOjpj
cmVhdGVDcm9zc1RocmVhZFRhc2spOgorCiAyMDE2LTA2LTA0ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IHJpZCBvZiBXb3JrSXRlbVdpbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmggYi9Tb3VyY2UvV1RGL3d0
Zi9Dcm9zc1RocmVhZFRhc2suaAppbmRleCAxYTE2ZTNhMzkwZWFhNGJjM2YyMWMzMGJlMTlkM2M5
OGVjYzUxZjQ4Li41Mzg1OGJjZTE0NGZhZDBjN2Q3MWFmM2MwY2Y1OTc4ZTcyNGFlYjhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2suaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9Dcm9zc1RocmVhZFRhc2suaApAQCAtMzIsMTMgKzMyLDMxIEBACiBuYW1lc3BhY2UgV1RG
IHsKIAogY2xhc3MgQ3Jvc3NUaHJlYWRUYXNrIHsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBUPgorICAg
IGZyaWVuZCBDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKFQmLCB2b2lkIChU
OjoqKSgpKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBQMSwgY2xhc3MgTVAxPgorICAg
IGZyaWVuZCBDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKFQmLCB2b2lkIChU
OjoqKShNUDEpLCBjb25zdCBQMSYpOworICAgIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFAxLCBj
bGFzcyBNUDEsIGNsYXNzIFAyLCBjbGFzcyBNUDI+CisgICAgZnJpZW5kIENyb3NzVGhyZWFkVGFz
ayBjcmVhdGVDcm9zc1RocmVhZFRhc2soVCYsIHZvaWQgKFQ6OiopKE1QMSwgTVAyKSwgY29uc3Qg
UDEmLCBjb25zdCBQMiYpOworICAgIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFAxLCBjbGFzcyBN
UDEsIGNsYXNzIFAyLCBjbGFzcyBNUDIsIGNsYXNzIFAzLCBjbGFzcyBNUDM+CisgICAgZnJpZW5k
IENyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2soVCYsIHZvaWQgKFQ6OiopKE1Q
MSwgTVAyLCBNUDMpLCBjb25zdCBQMSYsIGNvbnN0IFAyJiwgY29uc3QgUDMmKTsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBULCBjbGFzcyBQMSwgY2xhc3MgTVAxLCBjbGFzcyBQMiwgY2xhc3MgTVAyLCBj
bGFzcyBQMywgY2xhc3MgTVAzLCBjbGFzcyBQNCwgY2xhc3MgTVA0PgorICAgIGZyaWVuZCBDcm9z
c1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKFQmLCB2b2lkIChUOjoqKShNUDEsIE1Q
MiwgTVAzLCBNUDQpLCBjb25zdCBQMSYsIGNvbnN0IFAyJiwgY29uc3QgUDMmLCBjb25zdCBQNCYp
OworICAgIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFAxLCBjbGFzcyBNUDEsIGNsYXNzIFAyLCBj
bGFzcyBNUDIsIGNsYXNzIFAzLCBjbGFzcyBNUDMsIGNsYXNzIFA0LCBjbGFzcyBNUDQsIGNsYXNz
IFA1LCBjbGFzcyBNUDU+CisgICAgZnJpZW5kIENyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soVCYsIHZvaWQgKFQ6OiopKE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1KSwgY29uc3Qg
UDEmLCBjb25zdCBQMiYsIGNvbnN0IFAzJiwgY29uc3QgUDQmLCBjb25zdCBQNSYpOworICAgIHRl
bXBsYXRlPGNsYXNzIFQsIGNsYXNzIFAxLCBjbGFzcyBNUDEsIGNsYXNzIFAyLCBjbGFzcyBNUDIs
IGNsYXNzIFAzLCBjbGFzcyBNUDMsIGNsYXNzIFA0LCBjbGFzcyBNUDQsIGNsYXNzIFA1LCBjbGFz
cyBNUDUsIGNsYXNzIFA2LCBjbGFzcyBNUDY+CisgICAgZnJpZW5kIENyb3NzVGhyZWFkVGFzayBj
cmVhdGVDcm9zc1RocmVhZFRhc2soVCYsIHZvaWQgKFQ6OiopKE1QMSwgTVAyLCBNUDMsIE1QNCwg
TVA1LCBNUDYpLCBjb25zdCBQMSYsIGNvbnN0IFAyJiwgY29uc3QgUDMmLCBjb25zdCBQNCYsIGNv
bnN0IFA1JiwgY29uc3QgUDYmKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBQMSwgY2xh
c3MgTVAxLCBjbGFzcyBQMiwgY2xhc3MgTVAyLCBjbGFzcyBQMywgY2xhc3MgTVAzLCBjbGFzcyBQ
NCwgY2xhc3MgTVA0LCBjbGFzcyBQNSwgY2xhc3MgTVA1LCBjbGFzcyBQNiwgY2xhc3MgTVA2LCBj
bGFzcyBQNywgY2xhc3MgTVA3PgorICAgIGZyaWVuZCBDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jv
c3NUaHJlYWRUYXNrKFQmLCB2b2lkIChUOjoqKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2
LCBNUDcpLCBjb25zdCBQMSYsIGNvbnN0IFAyJiwgY29uc3QgUDMmLCBjb25zdCBQNCYsIGNvbnN0
IFA1JiwgY29uc3QgUDYmLCBjb25zdCBQNyYpOworICAgIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNz
IFAxLCBjbGFzcyBNUDEsIGNsYXNzIFAyLCBjbGFzcyBNUDIsIGNsYXNzIFAzLCBjbGFzcyBNUDMs
IGNsYXNzIFA0LCBjbGFzcyBNUDQsIGNsYXNzIFA1LCBjbGFzcyBNUDUsIGNsYXNzIFA2LCBjbGFz
cyBNUDYsIGNsYXNzIFA3LCBjbGFzcyBNUDcsIGNsYXNzIFA4LCBjbGFzcyBNUDg+CisgICAgZnJp
ZW5kIENyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2soVCYsIHZvaWQgKFQ6Oiop
KE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4KSwgY29uc3QgUDEmLCBjb25z
dCBQMiYsIGNvbnN0IFAzJiwgY29uc3QgUDQmLCBjb25zdCBQNSYsIGNvbnN0IFA2JiwgY29uc3Qg
UDcmLCBjb25zdCBQOCYpOwogcHVibGljOgogICAgIENyb3NzVGhyZWFkVGFzaygpID0gZGVmYXVs
dDsKIAogICAgIENyb3NzVGhyZWFkVGFzayhOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQgKCk+JiYg
dGFza0Z1bmN0aW9uKQogICAgICAgICA6IG1fdGFza0Z1bmN0aW9uKFdURk1vdmUodGFza0Z1bmN0
aW9uKSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0YXNrRnVuY3Rpb24pOworICAgICAgICBBU1NF
UlQobV90YXNrRnVuY3Rpb24pOwogICAgIH0KIAogICAgIHZvaWQgcGVyZm9ybVRhc2soKQpAQCAt
NTAsMzQgKzY4LDE0IEBAIHByb3RlY3RlZDoKICAgICBOb25jb3B5YWJsZUZ1bmN0aW9uPHZvaWQg
KCk+IG1fdGFza0Z1bmN0aW9uOwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1l
Li4uIEFyZ3VtZW50cz4KLWNsYXNzIENyb3NzVGhyZWFkVGFza0ltcGwgZmluYWwgOiBwdWJsaWMg
Q3Jvc3NUaHJlYWRUYXNrIHsKLXB1YmxpYzoKLSAgICBDcm9zc1RocmVhZFRhc2tJbXBsKFQqIGNh
bGxlZSwgdm9pZCAoVDo6Km1ldGhvZCkoQXJndW1lbnRzLi4uKSwgQXJndW1lbnRzJiYuLi4gYXJn
dW1lbnRzKQotICAgIHsKLSAgICAgICAgbV90YXNrRnVuY3Rpb24gPSBbY2FsbGVlLCBtZXRob2Qs
IGFyZ3VtZW50cy4uLl0gewotICAgICAgICAgICAgKGNhbGxlZS0+Km1ldGhvZCkoYXJndW1lbnRz
Li4uKTsKLSAgICAgICAgfTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJn
dW1lbnRzPgotY2xhc3MgQ3Jvc3NUaHJlYWRUYXNrU3RhdGljSW1wbCBmaW5hbCA6IHB1YmxpYyBD
cm9zc1RocmVhZFRhc2sgewotcHVibGljOgotICAgIENyb3NzVGhyZWFkVGFza1N0YXRpY0ltcGwo
dm9pZCAoKm1ldGhvZCkoQXJndW1lbnRzLi4uKSwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQot
ICAgIHsKLSAgICAgICAgbV90YXNrRnVuY3Rpb24gPSBbbWV0aG9kLCBhcmd1bWVudHMuLi5dIHsK
LSAgICAgICAgICAgIG1ldGhvZChhcmd1bWVudHMuLi4pOwotICAgICAgICB9OwotICAgIH0KLX07
Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJl
YWRUYXNrKAogICAgIFQmIGNhbGxlZSwKICAgICB2b2lkIChUOjoqbWV0aG9kKSgpKQogewotICAg
IHJldHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQ+KCZjYWxsZWUsIG1ldGhvZCk7CisgICAgcmV0
dXJuIENyb3NzVGhyZWFkVGFzayhbY2FsbGVlID0gJmNhbGxlZSwgbWV0aG9kXSgpIG11dGFibGUg
eworICAgICAgICAoY2FsbGVlLT4qbWV0aG9kKSgpOworICAgIH0pOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxPgpAQCAtODYsMTAgKzg0LDEwIEBA
IENyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgdm9pZCAoVDo6Km1l
dGhvZCkoTVAxKSwKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSkKIHsKLSAgICByZXR1cm4gQ3Jv
c3NUaHJlYWRUYXNrSW1wbDxULCBNUDE+KAotICAgICAgICAmY2FsbGVlLAotICAgICAgICBtZXRo
b2QsCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEp
KTsKKyAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsZWUgPSAmY2FsbGVlLCBtZXRob2Qs
CisgICAgICAgIHAxID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpXSgp
IG11dGFibGUgeworICAgICAgICAoY2FsbGVlLT4qbWV0aG9kKShwMSk7CisgICAgfSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1l
IFAyLCB0eXBlbmFtZSBNUDI+CkBAIC05OSwxMiArOTcsMTEgQEAgQ3Jvc3NUaHJlYWRUYXNrIGNy
ZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKICAgICBjb25z
dCBQMiYgcGFyYW1ldGVyMikKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBN
UDEsIE1QMj4oCi0gICAgICAgICZjYWxsZWUsCi0gICAgICAgIG1ldGhvZCwKLSAgICAgICAgV1RG
OjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCi0gICAgICAgIFdURjo6
Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpKTsKLQorICAgIHJldHVybiBD
cm9zc1RocmVhZFRhc2soW2NhbGxlZSA9ICZjYWxsZWUsIG1ldGhvZCwKKyAgICAgICAgcDEgPSBD
cm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCisgICAgICAgIHAyID0gQ3Jv
c3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpXSgpIG11dGFibGUgeworICAgICAg
ICAoY2FsbGVlLT4qbWV0aG9kKShwMSwgcDIpOworICAgIH0pOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUg
TVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzPgpAQCAtMTE1LDEyICsxMTIsMTIgQEAgQ3Jv
c3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBjb25zdCBQMiYgcGFyYW1l
dGVyMiwKICAgICBjb25zdCBQMyYgcGFyYW1ldGVyMykKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJl
YWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzPigKLSAgICAgICAgJmNhbGxlZSwKLSAgICAgICAg
bWV0aG9kLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0
ZXIxKSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVy
MiksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMp
KTsKKyAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsZWUgPSAmY2FsbGVlLCBtZXRob2Qs
CisgICAgICAgIHAxID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAor
ICAgICAgICBwMiA9IENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKKyAg
ICAgICAgcDMgPSBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyldKCkgbXV0
YWJsZSB7CisgICAgICAgIChjYWxsZWUtPiptZXRob2QpKHAxLCBwMiwgcDMpOworICAgIH0pOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlw
ZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzPgpAQCAtMTMwLDExICsxMjcsMTIg
QEAgQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBjb25zdCBQMiYg
cGFyYW1ldGVyMiwKICAgICBjb25zdCBQMyYgcGFyYW1ldGVyMykKIHsKLSAgICByZXR1cm4gQ3Jv
c3NUaHJlYWRUYXNrU3RhdGljSW1wbDxNUDEsIE1QMiwgTVAzPigKLSAgICAgICAgbWV0aG9kLAot
ICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKLSAg
ICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCi0gICAg
ICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpKTsKKyAgICBy
ZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrKFttZXRob2QsCisgICAgICAgIHAxID0gQ3Jvc3NUaHJlYWRD
b3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAorICAgICAgICBwMiA9IENyb3NzVGhyZWFkQ29w
aWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKKyAgICAgICAgcDMgPSBDcm9zc1RocmVhZENvcGll
cjxQMz46OmNvcHkocGFyYW1ldGVyMyldKCkgbXV0YWJsZSB7CisgICAgICAgIG1ldGhvZChwMSwg
cDIsIHAzKTsKKyAgICB9KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEs
IHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5
cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QND4KQEAgLTE0NiwxMyArMTQ0LDEz
IEBAIENyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgY29uc3QgUDMm
IHBhcmFtZXRlcjMsCiAgICAgY29uc3QgUDQmIHBhcmFtZXRlcjQpCiB7Ci0gICAgcmV0dXJuIENy
b3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0PigKLSAgICAgICAgJmNhbGxl
ZSwKLSAgICAgICAgbWV0aG9kLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6
Y29weShwYXJhbWV0ZXIxKSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMj46OmNv
cHkocGFyYW1ldGVyMiksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5
KHBhcmFtZXRlcjMpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShw
YXJhbWV0ZXI0KSk7CisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzayhbY2FsbGVlID0gJmNhbGxl
ZSwgbWV0aG9kLAorICAgICAgICBwMSA9IENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJh
bWV0ZXIxKSwKKyAgICAgICAgcDIgPSBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1l
dGVyMiksCisgICAgICAgIHAzID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRl
cjMpLAorICAgICAgICBwNCA9IENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgKGNhbGxlZS0+Km1ldGhvZCkocDEsIHAyLCBwMywgcDQp
OworICAgIH0pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5h
bWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUg
TVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1
PgpAQCAtMTY1LDE0ICsxNjMsMTQgQEAgQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFk
VGFzaygKICAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCwKICAgICBjb25zdCBQNSYgcGFyYW1ldGVy
NSkKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrSW1wbDxULCBNUDEsIE1QMiwgTVAzLCBN
UDQsIE1QNT4oCi0gICAgICAgICZjYWxsZWUsCi0gICAgICAgIG1ldGhvZCwKLSAgICAgICAgV1RG
OjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCi0gICAgICAgIFdURjo6
Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAotICAgICAgICBXVEY6OkNy
b3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwKLSAgICAgICAgV1RGOjpDcm9z
c1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCi0gICAgICAgIFdURjo6Q3Jvc3NU
aHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpKTsKKyAgICByZXR1cm4gQ3Jvc3NUaHJl
YWRUYXNrKFtjYWxsZWUgPSAmY2FsbGVlLCBtZXRob2QsCisgICAgICAgIHAxID0gQ3Jvc3NUaHJl
YWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAorICAgICAgICBwMiA9IENyb3NzVGhyZWFk
Q29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKKyAgICAgICAgcDMgPSBDcm9zc1RocmVhZENv
cGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksCisgICAgICAgIHA0ID0gQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAorICAgICAgICBwNSA9IENyb3NzVGhyZWFkQ29waWVy
PFA1Pjo6Y29weShwYXJhbWV0ZXI1KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgKGNhbGxlZS0+Km1l
dGhvZCkocDEsIHAyLCBwMywgcDQsIHA1KTsKKyAgICB9KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1Q
MiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwg
dHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNj4KQEAg
LTE4NiwxNSArMTg0LDE1IEBAIENyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2so
CiAgICAgY29uc3QgUDUmIHBhcmFtZXRlcjUsCiAgICAgY29uc3QgUDYmIHBhcmFtZXRlcjYpCiB7
Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0LCBN
UDUsIE1QNj4oCi0gICAgICAgICZjYWxsZWUsCi0gICAgICAgIG1ldGhvZCwKLSAgICAgICAgV1RG
OjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCi0gICAgICAgIFdURjo6
Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAotICAgICAgICBXVEY6OkNy
b3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwKLSAgICAgICAgV1RGOjpDcm9z
c1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCi0gICAgICAgIFdURjo6Q3Jvc3NU
aHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpLAotICAgICAgICBXVEY6OkNyb3NzVGhy
ZWFkQ29waWVyPFA2Pjo6Y29weShwYXJhbWV0ZXI2KSk7CisgICAgcmV0dXJuIENyb3NzVGhyZWFk
VGFzayhbY2FsbGVlID0gJmNhbGxlZSwgbWV0aG9kLAorICAgICAgICBwMSA9IENyb3NzVGhyZWFk
Q29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKKyAgICAgICAgcDIgPSBDcm9zc1RocmVhZENv
cGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCisgICAgICAgIHAzID0gQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLAorICAgICAgICBwNCA9IENyb3NzVGhyZWFkQ29waWVy
PFA0Pjo6Y29weShwYXJhbWV0ZXI0KSwKKyAgICAgICAgcDUgPSBDcm9zc1RocmVhZENvcGllcjxQ
NT46OmNvcHkocGFyYW1ldGVyNSksCisgICAgICAgIHA2ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+
Ojpjb3B5KHBhcmFtZXRlcjYpXSgpIG11dGFibGUgeworICAgICAgICAoY2FsbGVlLT4qbWV0aG9k
KShwMSwgcDIsIHAzLCBwNCwgcDUsIHA2KTsKKyAgICB9KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1Q
MiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwg
dHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlw
ZW5hbWUgUDcsIHR5cGVuYW1lIE1QNz4KQEAgLTIwOSwxNiArMjA3LDE2IEBAIENyb3NzVGhyZWFk
VGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgY29uc3QgUDYmIHBhcmFtZXRlcjYsCiAg
ICAgY29uc3QgUDcmIHBhcmFtZXRlcjcpCiB7Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0lt
cGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3PigKLSAgICAgICAgJmNhbGxl
ZSwKLSAgICAgICAgbWV0aG9kLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6
Y29weShwYXJhbWV0ZXIxKSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMj46OmNv
cHkocGFyYW1ldGVyMiksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5
KHBhcmFtZXRlcjMpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShw
YXJhbWV0ZXI0KSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQNT46OmNvcHkocGFy
YW1ldGVyNSksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBhcmFt
ZXRlcjYpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFA3Pjo6Y29weShwYXJhbWV0
ZXI3KSk7CisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzayhbY2FsbGVlID0gJmNhbGxlZSwgbWV0
aG9kLAorICAgICAgICBwMSA9IENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIx
KSwKKyAgICAgICAgcDIgPSBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiks
CisgICAgICAgIHAzID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLAor
ICAgICAgICBwNCA9IENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSwKKyAg
ICAgICAgcDUgPSBDcm9zc1RocmVhZENvcGllcjxQNT46OmNvcHkocGFyYW1ldGVyNSksCisgICAg
ICAgIHA2ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBhcmFtZXRlcjYpLAorICAgICAg
ICBwNyA9IENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6Y29weShwYXJhbWV0ZXI3KV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgKGNhbGxlZS0+Km1ldGhvZCkocDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcp
OworICAgIH0pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5h
bWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUg
TVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0LCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgTVA1
LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgTVA2LCB0eXBlbmFtZSBQNywgdHlwZW5hbWUgTVA3LCB0
eXBlbmFtZSBQOCwgdHlwZW5hbWUgTVA4PgpAQCAtMjM0LDE3ICsyMzIsMTcgQEAgQ3Jvc3NUaHJl
YWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygKICAgICBjb25zdCBQNyYgcGFyYW1ldGVyNywK
ICAgICBjb25zdCBQOCYgcGFyYW1ldGVyOCkKIHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNr
SW1wbDxULCBNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcsIE1QOD4oCi0gICAgICAg
ICZjYWxsZWUsCi0gICAgICAgIG1ldGhvZCwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGll
cjxQMT46OmNvcHkocGFyYW1ldGVyMSksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8
UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAz
Pjo6Y29weShwYXJhbWV0ZXIzKSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQND46
OmNvcHkocGFyYW1ldGVyNCksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpj
b3B5KHBhcmFtZXRlcjUpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29w
eShwYXJhbWV0ZXI2KSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQNz46OmNvcHko
cGFyYW1ldGVyNyksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDg+Ojpjb3B5KHBh
cmFtZXRlcjgpKTsKKyAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsZWUgPSAmY2FsbGVl
LCBtZXRob2QsCisgICAgICAgIHAxID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFt
ZXRlcjEpLAorICAgICAgICBwMiA9IENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0
ZXIyKSwKKyAgICAgICAgcDMgPSBDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVy
MyksCisgICAgICAgIHA0ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQp
LAorICAgICAgICBwNSA9IENyb3NzVGhyZWFkQ29waWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1KSwK
KyAgICAgICAgcDYgPSBDcm9zc1RocmVhZENvcGllcjxQNj46OmNvcHkocGFyYW1ldGVyNiksCisg
ICAgICAgIHA3ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDc+Ojpjb3B5KHBhcmFtZXRlcjcpLAorICAg
ICAgICBwOCA9IENyb3NzVGhyZWFkQ29waWVyPFA4Pjo6Y29weShwYXJhbWV0ZXI4KV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgKGNhbGxlZS0+Km1ldGhvZCkocDEsIHAyLCBwMywgcDQsIHA1LCBwNiwg
cDcsIHA4KTsKKyAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280810</attachid>
            <date>2016-06-08 09:34:13 -0700</date>
            <delta_ts>2016-06-08 10:04:42 -0700</delta_ts>
            <desc>Patch w/test</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15804</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYzhhMWFlZi4uYWQ2MzIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNi0wNi0wOCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBDcm9zc1Ro
cmVhZENvcGllciBtb3JlIGVmZmljaWVudCAoZmV3ZXIgY29waWVzISkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg0NTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCB3ZSdkIHJ1biBh
bGwgYXJndW1lbnRzIHRocm91Z2ggQ3Jvc3NUaHJlYWRDb3BpZXIsIHRoZW4gaW1tZWRpYXRlbHkg
bWFrZQorICAgICAgICBhbiB1bm5lY2Vzc2FyeSBjb3B5IG9mIHRoZSByZXN1bHQgZHVyaW5nIGxh
bWJkYSBjYXB0dXJlLgorCisgICAgICAgIEluc3RlYWQsIHdlIHNob3VsZCBqdXN0IHB1dCB0aGUg
Q3Jvc3NUaHJlYWRDb3BpZXIgZ2VuZXJhdGVkIG9iamVjdHMgZGlyZWN0bHkgaW4gbGFtYmRhcywK
KyAgICAgICAgd2hpY2ggYXJlIHRoZW4gY2FwdHVyZWQgYnkgTm9uY29weWFibGVGdW5jdGlvbnMu
CisKKyAgICAgICAgVGhpcyByZWR1Y2VzIHRoZSBudW1iZXIgb2YgY29uc3RydWN0b3IgY2FsbHMg
cGVyIGFyZ3VtZW50IGZyb20gMiBjb3BpZXMgdG8gMSBtb3ZlLgorCisgICAgICAgICogd3RmL0Ny
b3NzVGhyZWFkVGFzay5oOgorICAgICAgICAoV1RGOjpDcm9zc1RocmVhZFRhc2s6OkNyb3NzVGhy
ZWFkVGFzayk6CisgICAgICAgIChXVEY6OmNyZWF0ZUNyb3NzVGhyZWFkVGFzayk6CisKIDIwMTYt
MDYtMDcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1l
bnQgQWlyOjphbGxvY2F0ZVN0YWNrKCkgaW4gRVM2IHRvIHNlZSBob3cgbXVjaCBvZiBhIGJhZCBp
ZGVhIHRoYXQgaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFzay5o
IGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmgKaW5kZXggMWExNmUzYS4uNTM4NThi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmgKKysrIGIvU291
cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrLmgKQEAgLTMyLDEzICszMiwzMSBAQAogbmFtZXNw
YWNlIFdURiB7CiAKIGNsYXNzIENyb3NzVGhyZWFkVGFzayB7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
VD4KKyAgICBmcmllbmQgQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzayhUJiwg
dm9pZCAoVDo6KikoKSk7CisgICAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgUDEsIGNsYXNzIE1Q
MT4KKyAgICBmcmllbmQgQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzayhUJiwg
dm9pZCAoVDo6KikoTVAxKSwgY29uc3QgUDEmKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFz
cyBQMSwgY2xhc3MgTVAxLCBjbGFzcyBQMiwgY2xhc3MgTVAyPgorICAgIGZyaWVuZCBDcm9zc1Ro
cmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKFQmLCB2b2lkIChUOjoqKShNUDEsIE1QMiks
IGNvbnN0IFAxJiwgY29uc3QgUDImKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBQMSwg
Y2xhc3MgTVAxLCBjbGFzcyBQMiwgY2xhc3MgTVAyLCBjbGFzcyBQMywgY2xhc3MgTVAzPgorICAg
IGZyaWVuZCBDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKFQmLCB2b2lkIChU
OjoqKShNUDEsIE1QMiwgTVAzKSwgY29uc3QgUDEmLCBjb25zdCBQMiYsIGNvbnN0IFAzJik7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgUDEsIGNsYXNzIE1QMSwgY2xhc3MgUDIsIGNsYXNz
IE1QMiwgY2xhc3MgUDMsIGNsYXNzIE1QMywgY2xhc3MgUDQsIGNsYXNzIE1QND4KKyAgICBmcmll
bmQgQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNyb3NzVGhyZWFkVGFzayhUJiwgdm9pZCAoVDo6Kiko
TVAxLCBNUDIsIE1QMywgTVA0KSwgY29uc3QgUDEmLCBjb25zdCBQMiYsIGNvbnN0IFAzJiwgY29u
c3QgUDQmKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBQMSwgY2xhc3MgTVAxLCBjbGFz
cyBQMiwgY2xhc3MgTVAyLCBjbGFzcyBQMywgY2xhc3MgTVAzLCBjbGFzcyBQNCwgY2xhc3MgTVA0
LCBjbGFzcyBQNSwgY2xhc3MgTVA1PgorICAgIGZyaWVuZCBDcm9zc1RocmVhZFRhc2sgY3JlYXRl
Q3Jvc3NUaHJlYWRUYXNrKFQmLCB2b2lkIChUOjoqKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSks
IGNvbnN0IFAxJiwgY29uc3QgUDImLCBjb25zdCBQMyYsIGNvbnN0IFA0JiwgY29uc3QgUDUmKTsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBQMSwgY2xhc3MgTVAxLCBjbGFzcyBQMiwgY2xh
c3MgTVAyLCBjbGFzcyBQMywgY2xhc3MgTVAzLCBjbGFzcyBQNCwgY2xhc3MgTVA0LCBjbGFzcyBQ
NSwgY2xhc3MgTVA1LCBjbGFzcyBQNiwgY2xhc3MgTVA2PgorICAgIGZyaWVuZCBDcm9zc1RocmVh
ZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKFQmLCB2b2lkIChUOjoqKShNUDEsIE1QMiwgTVAz
LCBNUDQsIE1QNSwgTVA2KSwgY29uc3QgUDEmLCBjb25zdCBQMiYsIGNvbnN0IFAzJiwgY29uc3Qg
UDQmLCBjb25zdCBQNSYsIGNvbnN0IFA2Jik7CisgICAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3Mg
UDEsIGNsYXNzIE1QMSwgY2xhc3MgUDIsIGNsYXNzIE1QMiwgY2xhc3MgUDMsIGNsYXNzIE1QMywg
Y2xhc3MgUDQsIGNsYXNzIE1QNCwgY2xhc3MgUDUsIGNsYXNzIE1QNSwgY2xhc3MgUDYsIGNsYXNz
IE1QNiwgY2xhc3MgUDcsIGNsYXNzIE1QNz4KKyAgICBmcmllbmQgQ3Jvc3NUaHJlYWRUYXNrIGNy
ZWF0ZUNyb3NzVGhyZWFkVGFzayhUJiwgdm9pZCAoVDo6KikoTVAxLCBNUDIsIE1QMywgTVA0LCBN
UDUsIE1QNiwgTVA3KSwgY29uc3QgUDEmLCBjb25zdCBQMiYsIGNvbnN0IFAzJiwgY29uc3QgUDQm
LCBjb25zdCBQNSYsIGNvbnN0IFA2JiwgY29uc3QgUDcmKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBU
LCBjbGFzcyBQMSwgY2xhc3MgTVAxLCBjbGFzcyBQMiwgY2xhc3MgTVAyLCBjbGFzcyBQMywgY2xh
c3MgTVAzLCBjbGFzcyBQNCwgY2xhc3MgTVA0LCBjbGFzcyBQNSwgY2xhc3MgTVA1LCBjbGFzcyBQ
NiwgY2xhc3MgTVA2LCBjbGFzcyBQNywgY2xhc3MgTVA3LCBjbGFzcyBQOCwgY2xhc3MgTVA4Pgor
ICAgIGZyaWVuZCBDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKFQmLCB2b2lk
IChUOjoqKShNUDEsIE1QMiwgTVAzLCBNUDQsIE1QNSwgTVA2LCBNUDcsIE1QOCksIGNvbnN0IFAx
JiwgY29uc3QgUDImLCBjb25zdCBQMyYsIGNvbnN0IFA0JiwgY29uc3QgUDUmLCBjb25zdCBQNiYs
IGNvbnN0IFA3JiwgY29uc3QgUDgmKTsKIHB1YmxpYzoKICAgICBDcm9zc1RocmVhZFRhc2soKSA9
IGRlZmF1bHQ7CiAKICAgICBDcm9zc1RocmVhZFRhc2soTm9uY29weWFibGVGdW5jdGlvbjx2b2lk
ICgpPiYmIHRhc2tGdW5jdGlvbikKICAgICAgICAgOiBtX3Rhc2tGdW5jdGlvbihXVEZNb3ZlKHRh
c2tGdW5jdGlvbikpCiAgICAgewotICAgICAgICBBU1NFUlQodGFza0Z1bmN0aW9uKTsKKyAgICAg
ICAgQVNTRVJUKG1fdGFza0Z1bmN0aW9uKTsKICAgICB9CiAKICAgICB2b2lkIHBlcmZvcm1UYXNr
KCkKQEAgLTUwLDM0ICs2OCwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgTm9uY29weWFibGVGdW5jdGlv
bjx2b2lkICgpPiBtX3Rhc2tGdW5jdGlvbjsKIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci1jbGFzcyBDcm9zc1RocmVhZFRhc2tJbXBsIGZpbmFsIDog
cHVibGljIENyb3NzVGhyZWFkVGFzayB7Ci1wdWJsaWM6Ci0gICAgQ3Jvc3NUaHJlYWRUYXNrSW1w
bChUKiBjYWxsZWUsIHZvaWQgKFQ6OiptZXRob2QpKEFyZ3VtZW50cy4uLiksIEFyZ3VtZW50cyYm
Li4uIGFyZ3VtZW50cykKLSAgICB7Ci0gICAgICAgIG1fdGFza0Z1bmN0aW9uID0gW2NhbGxlZSwg
bWV0aG9kLCBhcmd1bWVudHMuLi5dIHsKLSAgICAgICAgICAgIChjYWxsZWUtPiptZXRob2QpKGFy
Z3VtZW50cy4uLik7Ci0gICAgICAgIH07Ci0gICAgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
Li4uIEFyZ3VtZW50cz4KLWNsYXNzIENyb3NzVGhyZWFkVGFza1N0YXRpY0ltcGwgZmluYWwgOiBw
dWJsaWMgQ3Jvc3NUaHJlYWRUYXNrIHsKLXB1YmxpYzoKLSAgICBDcm9zc1RocmVhZFRhc2tTdGF0
aWNJbXBsKHZvaWQgKCptZXRob2QpKEFyZ3VtZW50cy4uLiksIEFyZ3VtZW50cyYmLi4uIGFyZ3Vt
ZW50cykKLSAgICB7Ci0gICAgICAgIG1fdGFza0Z1bmN0aW9uID0gW21ldGhvZCwgYXJndW1lbnRz
Li4uXSB7Ci0gICAgICAgICAgICBtZXRob2QoYXJndW1lbnRzLi4uKTsKLSAgICAgICAgfTsKLSAg
ICB9Ci19OwotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogQ3Jvc3NUaHJlYWRUYXNrIGNyZWF0ZUNy
b3NzVGhyZWFkVGFzaygKICAgICBUJiBjYWxsZWUsCiAgICAgdm9pZCAoVDo6Km1ldGhvZCkoKSkK
IHsKLSAgICByZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrSW1wbDxUPigmY2FsbGVlLCBtZXRob2QpOwor
ICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2soW2NhbGxlZSA9ICZjYWxsZWUsIG1ldGhvZF0oKSBt
dXRhYmxlIHsKKyAgICAgICAgKGNhbGxlZS0+Km1ldGhvZCkoKTsKKyAgICB9KTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMT4KQEAgLTg2LDEwICs4
NCwxMCBAQCBDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIHZvaWQg
KFQ6OiptZXRob2QpKE1QMSksCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEpCiB7Ci0gICAgcmV0
dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxPigKLSAgICAgICAgJmNhbGxlZSwKLSAgICAg
ICAgbWV0aG9kLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJh
bWV0ZXIxKSk7CisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzayhbY2FsbGVlID0gJmNhbGxlZSwg
bWV0aG9kLAorICAgICAgICBwMSA9IENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0
ZXIxKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgKGNhbGxlZS0+Km1ldGhvZCkocDEpOworICAgIH0p
OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0
eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyPgpAQCAtOTksMTIgKzk3LDExIEBAIENyb3NzVGhyZWFk
VGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgY29uc3QgUDEmIHBhcmFtZXRlcjEsCiAg
ICAgY29uc3QgUDImIHBhcmFtZXRlcjIpCiB7Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0lt
cGw8VCwgTVAxLCBNUDI+KAotICAgICAgICAmY2FsbGVlLAotICAgICAgICBtZXRob2QsCi0gICAg
ICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAotICAgICAg
ICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSk7Ci0KKyAgICBy
ZXR1cm4gQ3Jvc3NUaHJlYWRUYXNrKFtjYWxsZWUgPSAmY2FsbGVlLCBtZXRob2QsCisgICAgICAg
IHAxID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAorICAgICAgICBw
MiA9IENyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgKGNhbGxlZS0+Km1ldGhvZCkocDEsIHAyKTsKKyAgICB9KTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5
cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMz4KQEAgLTExNSwxMiArMTEyLDEy
IEBAIENyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgY29uc3QgUDIm
IHBhcmFtZXRlcjIsCiAgICAgY29uc3QgUDMmIHBhcmFtZXRlcjMpCiB7Ci0gICAgcmV0dXJuIENy
b3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMz4oCi0gICAgICAgICZjYWxsZWUsCi0g
ICAgICAgIG1ldGhvZCwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHko
cGFyYW1ldGVyMSksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBh
cmFtZXRlcjIpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJh
bWV0ZXIzKSk7CisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzayhbY2FsbGVlID0gJmNhbGxlZSwg
bWV0aG9kLAorICAgICAgICBwMSA9IENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0
ZXIxKSwKKyAgICAgICAgcDIgPSBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVy
MiksCisgICAgICAgIHAzID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMp
XSgpIG11dGFibGUgeworICAgICAgICAoY2FsbGVlLT4qbWV0aG9kKShwMSwgcDIsIHAzKTsKKyAg
ICB9KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUg
UDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMz4KQEAgLTEzMCwxMSAr
MTI3LDEyIEBAIENyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgY29u
c3QgUDImIHBhcmFtZXRlcjIsCiAgICAgY29uc3QgUDMmIHBhcmFtZXRlcjMpCiB7Ci0gICAgcmV0
dXJuIENyb3NzVGhyZWFkVGFza1N0YXRpY0ltcGw8TVAxLCBNUDIsIE1QMz4oCi0gICAgICAgIG1l
dGhvZCwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVy
MSksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIp
LAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSk7
CisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzayhbbWV0aG9kLAorICAgICAgICBwMSA9IENyb3Nz
VGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKKyAgICAgICAgcDIgPSBDcm9zc1Ro
cmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCisgICAgICAgIHAzID0gQ3Jvc3NUaHJl
YWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpXSgpIG11dGFibGUgeworICAgICAgICBtZXRo
b2QocDEsIHAyLCBwMyk7CisgICAgfSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBNUDIsIHR5cGVuYW1l
IFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBNUDQ+CkBAIC0xNDYsMTMg
KzE0NCwxMyBAQCBDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIGNv
bnN0IFAzJiBwYXJhbWV0ZXIzLAogICAgIGNvbnN0IFA0JiBwYXJhbWV0ZXI0KQogewotICAgIHJl
dHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QND4oCi0gICAgICAg
ICZjYWxsZWUsCi0gICAgICAgIG1ldGhvZCwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGll
cjxQMT46OmNvcHkocGFyYW1ldGVyMSksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8
UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAz
Pjo6Y29weShwYXJhbWV0ZXIzKSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQND46
OmNvcHkocGFyYW1ldGVyNCkpOworICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2soW2NhbGxlZSA9
ICZjYWxsZWUsIG1ldGhvZCwKKyAgICAgICAgcDEgPSBDcm9zc1RocmVhZENvcGllcjxQMT46OmNv
cHkocGFyYW1ldGVyMSksCisgICAgICAgIHAyID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5
KHBhcmFtZXRlcjIpLAorICAgICAgICBwMyA9IENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShw
YXJhbWV0ZXIzKSwKKyAgICAgICAgcDQgPSBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFy
YW1ldGVyNCldKCkgbXV0YWJsZSB7CisgICAgICAgIChjYWxsZWUtPiptZXRob2QpKHAxLCBwMiwg
cDMsIHA0KTsKKyAgICB9KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEs
IHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5
cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVu
YW1lIE1QNT4KQEAgLTE2NSwxNCArMTYzLDE0IEBAIENyb3NzVGhyZWFkVGFzayBjcmVhdGVDcm9z
c1RocmVhZFRhc2soCiAgICAgY29uc3QgUDQmIHBhcmFtZXRlcjQsCiAgICAgY29uc3QgUDUmIHBh
cmFtZXRlcjUpCiB7Ci0gICAgcmV0dXJuIENyb3NzVGhyZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIs
IE1QMywgTVA0LCBNUDU+KAotICAgICAgICAmY2FsbGVlLAotICAgICAgICBtZXRob2QsCi0gICAg
ICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAotICAgICAg
ICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAg
V1RGOjpDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksCi0gICAgICAgIFdU
Rjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAotICAgICAgICBXVEY6
OkNyb3NzVGhyZWFkQ29waWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1KSk7CisgICAgcmV0dXJuIENy
b3NzVGhyZWFkVGFzayhbY2FsbGVlID0gJmNhbGxlZSwgbWV0aG9kLAorICAgICAgICBwMSA9IENy
b3NzVGhyZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKKyAgICAgICAgcDIgPSBDcm9z
c1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiksCisgICAgICAgIHAzID0gQ3Jvc3NU
aHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLAorICAgICAgICBwNCA9IENyb3NzVGhy
ZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSwKKyAgICAgICAgcDUgPSBDcm9zc1RocmVh
ZENvcGllcjxQNT46OmNvcHkocGFyYW1ldGVyNSldKCkgbXV0YWJsZSB7CisgICAgICAgIChjYWxs
ZWUtPiptZXRob2QpKHAxLCBwMiwgcDMsIHA0LCBwNSk7CisgICAgfSk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBl
bmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFt
ZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBN
UDY+CkBAIC0xODYsMTUgKzE4NCwxNSBAQCBDcm9zc1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJl
YWRUYXNrKAogICAgIGNvbnN0IFA1JiBwYXJhbWV0ZXI1LAogICAgIGNvbnN0IFA2JiBwYXJhbWV0
ZXI2KQogewotICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMs
IE1QNCwgTVA1LCBNUDY+KAotICAgICAgICAmY2FsbGVlLAotICAgICAgICBtZXRob2QsCi0gICAg
ICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAotICAgICAg
ICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAg
V1RGOjpDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksCi0gICAgICAgIFdU
Rjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAotICAgICAgICBXVEY6
OkNyb3NzVGhyZWFkQ29waWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1KSwKLSAgICAgICAgV1RGOjpD
cm9zc1RocmVhZENvcGllcjxQNj46OmNvcHkocGFyYW1ldGVyNikpOworICAgIHJldHVybiBDcm9z
c1RocmVhZFRhc2soW2NhbGxlZSA9ICZjYWxsZWUsIG1ldGhvZCwKKyAgICAgICAgcDEgPSBDcm9z
c1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCisgICAgICAgIHAyID0gQ3Jvc3NU
aHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAorICAgICAgICBwMyA9IENyb3NzVGhy
ZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIzKSwKKyAgICAgICAgcDQgPSBDcm9zc1RocmVh
ZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCisgICAgICAgIHA1ID0gQ3Jvc3NUaHJlYWRD
b3BpZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUpLAorICAgICAgICBwNiA9IENyb3NzVGhyZWFkQ29w
aWVyPFA2Pjo6Y29weShwYXJhbWV0ZXI2KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgKGNhbGxlZS0+
Km1ldGhvZCkocDEsIHAyLCBwMywgcDQsIHA1LCBwNik7CisgICAgfSk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBl
bmFtZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFt
ZSBNUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBN
UDYsIHR5cGVuYW1lIFA3LCB0eXBlbmFtZSBNUDc+CkBAIC0yMDksMTYgKzIwNywxNiBAQCBDcm9z
c1RocmVhZFRhc2sgY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKAogICAgIGNvbnN0IFA2JiBwYXJhbWV0
ZXI2LAogICAgIGNvbnN0IFA3JiBwYXJhbWV0ZXI3KQogewotICAgIHJldHVybiBDcm9zc1RocmVh
ZFRhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1QNz4oCi0gICAgICAg
ICZjYWxsZWUsCi0gICAgICAgIG1ldGhvZCwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGll
cjxQMT46OmNvcHkocGFyYW1ldGVyMSksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8
UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFAz
Pjo6Y29weShwYXJhbWV0ZXIzKSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQND46
OmNvcHkocGFyYW1ldGVyNCksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpj
b3B5KHBhcmFtZXRlcjUpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29w
eShwYXJhbWV0ZXI2KSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQNz46OmNvcHko
cGFyYW1ldGVyNykpOworICAgIHJldHVybiBDcm9zc1RocmVhZFRhc2soW2NhbGxlZSA9ICZjYWxs
ZWUsIG1ldGhvZCwKKyAgICAgICAgcDEgPSBDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFy
YW1ldGVyMSksCisgICAgICAgIHAyID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFt
ZXRlcjIpLAorICAgICAgICBwMyA9IENyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0
ZXIzKSwKKyAgICAgICAgcDQgPSBDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVy
NCksCisgICAgICAgIHA1ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDU+Ojpjb3B5KHBhcmFtZXRlcjUp
LAorICAgICAgICBwNiA9IENyb3NzVGhyZWFkQ29waWVyPFA2Pjo6Y29weShwYXJhbWV0ZXI2KSwK
KyAgICAgICAgcDcgPSBDcm9zc1RocmVhZENvcGllcjxQNz46OmNvcHkocGFyYW1ldGVyNyldKCkg
bXV0YWJsZSB7CisgICAgICAgIChjYWxsZWUtPiptZXRob2QpKHAxLCBwMiwgcDMsIHA0LCBwNSwg
cDYsIHA3KTsKKyAgICB9KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEs
IHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5
cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVu
YW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1l
IE1QNywgdHlwZW5hbWUgUDgsIHR5cGVuYW1lIE1QOD4KQEAgLTIzNCwxNyArMjMyLDE3IEBAIENy
b3NzVGhyZWFkVGFzayBjcmVhdGVDcm9zc1RocmVhZFRhc2soCiAgICAgY29uc3QgUDcmIHBhcmFt
ZXRlcjcsCiAgICAgY29uc3QgUDgmIHBhcmFtZXRlcjgpCiB7Ci0gICAgcmV0dXJuIENyb3NzVGhy
ZWFkVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3LCBNUDg+KAot
ICAgICAgICAmY2FsbGVlLAotICAgICAgICBtZXRob2QsCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJl
YWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFk
Q29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENv
cGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3Bp
ZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVy
PFA1Pjo6Y29weShwYXJhbWV0ZXI1KSwKLSAgICAgICAgV1RGOjpDcm9zc1RocmVhZENvcGllcjxQ
Nj46OmNvcHkocGFyYW1ldGVyNiksCi0gICAgICAgIFdURjo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDc+
Ojpjb3B5KHBhcmFtZXRlcjcpLAotICAgICAgICBXVEY6OkNyb3NzVGhyZWFkQ29waWVyPFA4Pjo6
Y29weShwYXJhbWV0ZXI4KSk7CisgICAgcmV0dXJuIENyb3NzVGhyZWFkVGFzayhbY2FsbGVlID0g
JmNhbGxlZSwgbWV0aG9kLAorICAgICAgICBwMSA9IENyb3NzVGhyZWFkQ29waWVyPFAxPjo6Y29w
eShwYXJhbWV0ZXIxKSwKKyAgICAgICAgcDIgPSBDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHko
cGFyYW1ldGVyMiksCisgICAgICAgIHAzID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBh
cmFtZXRlcjMpLAorICAgICAgICBwNCA9IENyb3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShwYXJh
bWV0ZXI0KSwKKyAgICAgICAgcDUgPSBDcm9zc1RocmVhZENvcGllcjxQNT46OmNvcHkocGFyYW1l
dGVyNSksCisgICAgICAgIHA2ID0gQ3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBhcmFtZXRl
cjYpLAorICAgICAgICBwNyA9IENyb3NzVGhyZWFkQ29waWVyPFA3Pjo6Y29weShwYXJhbWV0ZXI3
KSwKKyAgICAgICAgcDggPSBDcm9zc1RocmVhZENvcGllcjxQOD46OmNvcHkocGFyYW1ldGVyOCld
KCkgbXV0YWJsZSB7CisgICAgICAgIChjYWxsZWUtPiptZXRob2QpKHAxLCBwMiwgcDMsIHA0LCBw
NSwgcDYsIHA3LCBwOCk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVjOWU5OGQuLjRi
MGZjNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsNSArMSwxNSBAQAogMjAxNi0wNi0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKKyAgICAgICAgTWFrZSBDcm9zc1RocmVhZENvcGllciBtb3JlIGVmZmljaWVudCAo
ZmV3ZXIgY29waWVzISkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTg0NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKworMjAxNi0wNi0wOCAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IHRoYXQgY29u
ZmlybXMgb2JqZWN0IGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgY2FsbHMgZHVyaW5nIGNyZWF0aW9u
IG9mIGEgQ3Jvc3NUaHJlYWRUYXNrLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU4NTI4CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCmluZGV4IDU5MWEzOTAuLjhjNjQ2YWMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcApAQCAt
MTAyLDcgKzEwMiw3IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgICAg
IGF1dG8gdGFzayA9IGNyZWF0ZUNyb3NzVGhyZWFkVGFzayh0ZXN0RnVuY3Rpb24sIGxvZ2dlcjEs
IGxvZ2dlcjIsIGxvZ2dlcjMpOwogICAgICAgICB0YXNrLnBlcmZvcm1UYXNrKCk7CiAgICAgfQot
ICAgIEFTU0VSVF9TVFJFUSgiZGVmYXVsdF9jb25zdHJ1Y3Rvcig8ZGVmYXVsdD4tMC0wKSBjb3B5
X2NvbnN0cnVjdG9yKDxkZWZhdWx0Pi0xLTApIG5hbWVfY29uc3RydWN0b3IobG9nZ2VyLTAtMCkg
aXNvbGF0ZWRDb3B5KCkgY29weV9jb25zdHJ1Y3Rvcig8ZGVmYXVsdD4tMS0wKSBpc29sYXRlZENv
cHkoKSBjb3B5X2NvbnN0cnVjdG9yKDxkZWZhdWx0Pi0yLTApIGlzb2xhdGVkQ29weSgpIGNvcHlf
Y29uc3RydWN0b3IobG9nZ2VyLTEtMCkgY29weV9jb25zdHJ1Y3Rvcig8ZGVmYXVsdD4tMi0wKSBj
b3B5X2NvbnN0cnVjdG9yKDxkZWZhdWx0Pi0zLTApIGNvcHlfY29uc3RydWN0b3IobG9nZ2VyLTIt
MCkgY29weV9jb25zdHJ1Y3Rvcig8ZGVmYXVsdD4tMy0wKSBjb3B5X2NvbnN0cnVjdG9yKDxkZWZh
dWx0Pi00LTApIGNvcHlfY29uc3RydWN0b3IobG9nZ2VyLTMtMCkgZGVzdHJ1Y3Rvcihsb2dnZXIt
Mi0wKSBkZXN0cnVjdG9yKDxkZWZhdWx0Pi0zLTApIGRlc3RydWN0b3IoPGRlZmF1bHQ+LTItMCkg
ZGVzdHJ1Y3Rvcihsb2dnZXItMS0wKSBkZXN0cnVjdG9yKDxkZWZhdWx0Pi0yLTApIGRlc3RydWN0
b3IoPGRlZmF1bHQ+LTEtMCkgdGVzdEZ1bmN0aW9uIGNhbGxlZCBkZXN0cnVjdG9yKGxvZ2dlci0z
LTApIGRlc3RydWN0b3IoPGRlZmF1bHQ+LTQtMCkgZGVzdHJ1Y3Rvcig8ZGVmYXVsdD4tMy0wKSBk
ZXN0cnVjdG9yKGxvZ2dlci0wLTApIGRlc3RydWN0b3IoPGRlZmF1bHQ+LTEtMCkgZGVzdHJ1Y3Rv
cig8ZGVmYXVsdD4tMC0wKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisgICAgQVNTRVJUX1NU
UkVRKCJkZWZhdWx0X2NvbnN0cnVjdG9yKDxkZWZhdWx0Pi0wLTApIGNvcHlfY29uc3RydWN0b3Io
PGRlZmF1bHQ+LTEtMCkgbmFtZV9jb25zdHJ1Y3Rvcihsb2dnZXItMC0wKSBpc29sYXRlZENvcHko
KSBjb3B5X2NvbnN0cnVjdG9yKDxkZWZhdWx0Pi0xLTApIGlzb2xhdGVkQ29weSgpIGNvcHlfY29u
c3RydWN0b3IoPGRlZmF1bHQ+LTItMCkgaXNvbGF0ZWRDb3B5KCkgY29weV9jb25zdHJ1Y3Rvcihs
b2dnZXItMS0wKSBtb3ZlX2NvbnN0cnVjdG9yKDxkZWZhdWx0Pi0xLTEpIG1vdmVfY29uc3RydWN0
b3IoPGRlZmF1bHQ+LTItMSkgbW92ZV9jb25zdHJ1Y3Rvcihsb2dnZXItMS0xKSBkZXN0cnVjdG9y
KGxvZ2dlci0xLTApIGRlc3RydWN0b3IoPGRlZmF1bHQ+LTItMCkgZGVzdHJ1Y3Rvcig8ZGVmYXVs
dD4tMS0wKSB0ZXN0RnVuY3Rpb24gY2FsbGVkIGRlc3RydWN0b3IobG9nZ2VyLTEtMSkgZGVzdHJ1
Y3Rvcig8ZGVmYXVsdD4tMi0xKSBkZXN0cnVjdG9yKDxkZWZhdWx0Pi0xLTEpIGRlc3RydWN0b3Io
bG9nZ2VyLTAtMCkgZGVzdHJ1Y3Rvcig8ZGVmYXVsdD4tMS0wKSBkZXN0cnVjdG9yKDxkZWZhdWx0
Pi0wLTApICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="304696"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>