<?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>235004</bug_id>
          
          <creation_ts>2022-01-08 10:21:52 -0800</creation_ts>
          <short_desc>Add helpers to access CoreGraphics color spaces more easily in generic contexts</short_desc>
          <delta_ts>2022-01-09 10:54:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1829229</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-08 10:21:52 -0800</bug_when>
    <thetext>Add helpers to access CoreGraphics color spaces more easily in generic contexts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829238</commentid>
    <comment_count>1</comment_count>
      <attachid>448674</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-08 11:09:56 -0800</bug_when>
    <thetext>Created attachment 448674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829276</commentid>
    <comment_count>2</comment_count>
      <attachid>448694</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-08 19:59:01 -0800</bug_when>
    <thetext>Created attachment 448694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829310</commentid>
    <comment_count>3</comment_count>
      <attachid>448694</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-09 08:49:44 -0800</bug_when>
    <thetext>Comment on attachment 448694
Patch

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

&gt; Source/WebCore/platform/graphics/cg/ColorSpaceCG.h:141
&gt; +    template&lt;ColorSpace C&gt; static auto test(int) -&gt; TrueIfDefined&lt;decltype(CGColorSpaceMapping&lt;C&gt;::colorSpace())&gt;;

Consider &quot;space&quot; or &quot;colorSpace&quot; instead of C? Here and just below.

&gt; Source/WebCore/platform/graphics/cg/ColorSpaceCG.h:142
&gt; +    template&lt;ColorSpace C&gt; static auto test(long) -&gt; std::false_type;

Omit &quot;C&quot; here.

&gt; Source/WebCore/platform/graphics/cg/ColorSpaceCG.h:145
&gt; +template&lt;ColorSpace C&gt; inline constexpr bool HasCGColorSpaceMapping = decltype(HasCGColorSpaceMappingHelper::test&lt;C&gt;(0))();

This looks more complicated than what ColorTypes.h uses for HasDescriptorMember, etc. And HasBeginFunctionMember in Hasher.h is what I came up with when I needed to solve a similar problem. I am not sure if the problems are close enough to the same, but I am surprised we need more code here.

HasModernDecoder in ArgumentCoder.h is more complex, closer to what we have here.

Would like it if the idioms were similar for cases like these, and I don’t understand what leads to this more complex thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829317</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-09 09:24:29 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 448694 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448694&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/ColorSpaceCG.h:141
&gt; &gt; +    template&lt;ColorSpace C&gt; static auto test(int) -&gt; TrueIfDefined&lt;decltype(CGColorSpaceMapping&lt;C&gt;::colorSpace())&gt;;
&gt; 
&gt; Consider &quot;space&quot; or &quot;colorSpace&quot; instead of C? Here and just below.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/ColorSpaceCG.h:142
&gt; &gt; +    template&lt;ColorSpace C&gt; static auto test(long) -&gt; std::false_type;
&gt; 
&gt; Omit &quot;C&quot; here.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/ColorSpaceCG.h:145
&gt; &gt; +template&lt;ColorSpace C&gt; inline constexpr bool HasCGColorSpaceMapping = decltype(HasCGColorSpaceMappingHelper::test&lt;C&gt;(0))();
&gt; 
&gt; This looks more complicated than what ColorTypes.h uses for
&gt; HasDescriptorMember, etc. And HasBeginFunctionMember in Hasher.h is what I
&gt; came up with when I needed to solve a similar problem. I am not sure if the
&gt; problems are close enough to the same, but I am surprised we need more code
&gt; here.
&gt; 
&gt; HasModernDecoder in ArgumentCoder.h is more complex, closer to what we have
&gt; here.
&gt; 
&gt; Would like it if the idioms were similar for cases like these, and I don’t
&gt; understand what leads to this more complex thing.

Dang, I was trying to remember where I (or someone else) had done this before and was coming up blank. These options are much more clear. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829319</commentid>
    <comment_count>5</comment_count>
      <attachid>448706</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-09 09:27:56 -0800</bug_when>
    <thetext>Created attachment 448706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829320</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-09 09:29:25 -0800</bug_when>
    <thetext>&gt; I don’t understand what leads to this more complex thing.

That magical intangible technical constraint of my feeble memory :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829321</commentid>
    <comment_count>7</comment_count>
      <attachid>448707</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-09 09:33:10 -0800</bug_when>
    <thetext>Created attachment 448707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829329</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-09 10:07:11 -0800</bug_when>
    <thetext>Committed r287821 (245873@main): &lt;https://commits.webkit.org/245873@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448707.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829331</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-09 10:08:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/87312687&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829337</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-09 10:19:36 -0800</bug_when>
    <thetext>Patch 448706 does not build</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448674</attachid>
            <date>2022-01-08 11:09:56 -0800</date>
            <delta_ts>2022-01-08 19:59:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>colodSpaceCG.diff</filename>
            <type>text/plain</type>
            <size>14922</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODc4MTIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAxLTA4ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaGVscGVycyB0byBhY2Nlc3MgQ29yZUdyYXBoaWNz
IGNvbG9yIHNwYWNlcyBtb3JlIGVhc2lseSBpbiBnZW5lcmljIGNvbnRleHRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUu
aDoKKyAgICAgICAgVXBkYXRlIGhhdmUgbWFjcm8sIEhBVkVfQ09SRV9HUkFQSElDU19YWVpfQ09M
T1JfU1BBQ0UsIHRvIGhhdmUgYSBtb3JlIHNwZWNpZmljIG5hbWUsCisgICAgICAgIEhBVkVfQ09S
RV9HUkFQSElDU19YWVpfRDUwX0NPTE9SX1NQQUNFLCB3aGljaCBpcyByZWFsbHkgd2hhdCBpdCBp
cy4KKwogMjAyMi0wMS0wNyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZG9wdCBsaW5rZWRPbk9yQWZ0ZXIoKSBpbiBtb3JlIHBsYWNlcwpJbmRleDog
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvUGxhdGZvcm1IYXZlLmgJKHJldmlzaW9uIDI4NzgxMSkKKysrIFNvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtSGF2ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MDUsNyArOTA1LDcgQEAKICNkZWZpbmUg
SEFWRV9DT1JFX0dSQVBISUNTX0lUVVJfMjAyMF9DT0xPUl9TUEFDRSAxCiAjZGVmaW5lIEhBVkVf
Q09SRV9HUkFQSElDU19MSU5FQVJfU1JHQl9DT0xPUl9TUEFDRSAxCiAjZGVmaW5lIEhBVkVfQ09S
RV9HUkFQSElDU19ST01NUkdCX0NPTE9SX1NQQUNFIDEKLSNkZWZpbmUgSEFWRV9DT1JFX0dSQVBI
SUNTX1hZWl9DT0xPUl9TUEFDRSAxCisjZGVmaW5lIEhBVkVfQ09SRV9HUkFQSElDU19YWVpfRDUw
X0NPTE9SX1NQQUNFIDEKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
Mjg3ODEyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzYgQEAKKzIwMjItMDEtMDggIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBoZWxwZXJzIHRvIGFjY2VzcyBDb3JlR3JhcGhpY3MgY29sb3Igc3BhY2Vz
IG1vcmUgZWFzaWx5IGluIGdlbmVyaWMgY29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzb21lIHN0cnVjdHMgYW5kIHR5cGUgdHJhaXQg
aGVscGVycyB0byBhbGxvdyBhY2Nlc3NpbmcgdGhlIENvcmVHcmFwaGljcworICAgICAgICBDR0Nv
bG9yU3BhY2VSZWYgYXNzb2NpYXRlZCB3aXRoIGEgQ29sb3JTcGFjZSBlbnVtIHZhbHVlIGF0IGNv
bXBpbGUgdGltZS4gVGhpcworICAgICAgICB3aWxsIGJlIHVzZWZ1bCBmb3IgZ2VuZXJhbGl6aW5n
IHNvbWUgb2YgdGhlIGdyYWRpZW50IHJlbmRlcmluZyBjb2RlIG9wdGltaXphdGlvbnMKKyAgICAg
ICAgSSBoYXZlIHBsYW5uZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
ckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpjcmVhdGVBbmRMb3NzbGVzc2x5Q29u
dmVydFRvU3VwcG9ydGVkQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9yU3BhY2VGb3JDR0Nv
bG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5o
OgorICAgICAgICAoV2ViQ29yZTo6Q0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpTUkdC
Pjo6Y29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbG9yU3BhY2VNYXBwaW5nPENv
bG9yU3BhY2U6OkE5OFJHQj46OmNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0dDb2xv
clNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpEaXNwbGF5UDM+Ojpjb2xvclNwYWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWRBOThS
R0I+Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29sb3JTcGFjZU1hcHBpbmc8
Q29sb3JTcGFjZTo6RXh0ZW5kZWREaXNwbGF5UDM+Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWRSZWMyMDIwPjo6
Y29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9y
U3BhY2U6OkV4dGVuZGVkTGluZWFyU1JHQj46OmNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRlZFByb1Bob3RvUkdCPjo6
Y29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9y
U3BhY2U6OkV4dGVuZGVkU1JHQj46OmNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0dD
b2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpSZWMyMDIwPjo6Y29sb3JTcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkxpbmVhclNSR0I+
Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29sb3JTcGFjZU1hcHBpbmc8Q29s
b3JTcGFjZTo6UHJvUGhvdG9SR0I+Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNH
Q29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6WFlaX0Q1MD46OmNvbG9yU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0dDb2xvclNwYWNlTWFwcGluZ0dldHRlcjo6Y29sb3JTcGFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZSk6CisKIDIwMjItMDEt
MDggIEdhYnJpZWwgTmF2YSBNYXJpbm8gIDxnbmF2YW1hcmlub0BhcHBsZS5jb20+CiAKICAgICAg
ICAgbnVsbCBwdHIgZGVyZWYgaW4gV2ViQ29yZTo6TW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsQ29t
bWFuZDo6YXBwZW5kU2libGluZ05vZGVSYW5nZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCShyZXZpc2lvbiAyODc4
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgQ0dDb2xvclNwYWNlUmVmIFJP
TU1SR0JDb2xvclNwYWNlUmVmKCkKIH0KICNlbmRpZgogCi0jaWYgSEFWRShDT1JFX0dSQVBISUNT
X1hZWl9DT0xPUl9TUEFDRSkKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfWFlaX0Q1MF9DT0xPUl9T
UEFDRSkKIENHQ29sb3JTcGFjZVJlZiB4eXpENTBDb2xvclNwYWNlUmVmKCkKIHsKICAgICByZXR1
cm4gbmFtZWRDb2xvclNwYWNlPGtDR0NvbG9yU3BhY2VHZW5lcmljWFlaPigpOwpAQCAtMjE2LDcg
KzIxNiw3IEBAIHN0ZDo6b3B0aW9uYWw8Q29sb3JTcGFjZT4gY29sb3JTcGFjZUZvckNHQ29sb3JT
cGFjZShDRwogICAgICAgICByZXR1cm4gQ29sb3JTcGFjZTo6UHJvUGhvdG9SR0I7CiAjZW5kaWYK
IAotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19YWVpfQ09MT1JfU1BBQ0UpCisjaWYgSEFWRShDT1JF
X0dSQVBISUNTX1hZWl9ENTBfQ09MT1JfU1BBQ0UpCiAgICAgaWYgKENHQ29sb3JTcGFjZUVxdWFs
VG9Db2xvclNwYWNlKGNvbG9yU3BhY2UsIHh5ekQ1MENvbG9yU3BhY2VSZWYoKSkpCiAgICAgICAg
IHJldHVybiBDb2xvclNwYWNlOjpYWVpfRDUwOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkocmV2aXNpb24g
Mjg3ODExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFj
ZUNHLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE2MCArMzQsMTY5IEBAIFdURl9ERUNMQVJFX0NG
X1RZUEVfVFJBSVQoQ0dDb2xvclNwYWNlKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0ZW1w
bGF0ZTxDb2xvclNwYWNlPiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzsKKwogV0VCQ09SRV9F
WFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNlUmVmKCk7Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OlNSR0I+IHsgc3RhdGljIENHQ29s
b3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgeyByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsgfSB9
OwogCiAjaWYgSEFWRShDT1JFX0dSQVBISUNTX0FET0JFX1JHQl8xOTk4X0NPTE9SX1NQQUNFKQog
V0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGFkb2JlUkdCMTk5OENvbG9yU3BhY2VSZWYo
KTsKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6QTk4
UkdCPiB7IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIHsgcmV0dXJuIGFkb2Jl
UkdCMTk5OENvbG9yU3BhY2VSZWYoKTsgfSB9OworI2Vsc2UKK3RlbXBsYXRlPD4gc3RydWN0IENH
Q29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6QTk4UkdCPiB7IH07CiAjZW5kaWYKIAogI2lm
IEhBVkUoQ09SRV9HUkFQSElDU19ESVNQTEFZX1AzX0NPTE9SX1NQQUNFKQogV0VCQ09SRV9FWFBP
UlQgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKK3RlbXBsYXRlPD4g
c3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RGlzcGxheVAzPiB7IHN0YXRp
YyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIHsgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3Bh
Y2VSZWYoKTsgfSB9OworI2Vsc2UKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBp
bmc8Q29sb3JTcGFjZTo6RGlzcGxheVAzPiB7IH07CiAjZW5kaWYKIAogI2lmIEhBVkUoQ09SRV9H
UkFQSElDU19FWFRFTkRFRF9BRE9CRV9SR0JfMTk5OF9DT0xPUl9TUEFDRSkKIFdFQkNPUkVfRVhQ
T1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZEFkb2JlUkdCMTk5OENvbG9yU3BhY2VSZWYoKTsK
K3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5k
ZWRBOThSR0I+IHsgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgeyByZXR1cm4g
ZXh0ZW5kZWRBZG9iZVJHQjE5OThDb2xvclNwYWNlUmVmKCk7IH0gfTsKKyNlbHNlCit0ZW1wbGF0
ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkV4dGVuZGVkQTk4UkdC
PiB7IH07CiAjZW5kaWYKIAogI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9ESVNQTEFZ
X1AzX0NPTE9SX1NQQUNFKQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVk
RGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNl
TWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRlZERpc3BsYXlQMz4geyBzdGF0aWMgQ0dDb2xvclNw
YWNlUmVmIGNvbG9yU3BhY2UoKSB7IHJldHVybiBleHRlbmRlZERpc3BsYXlQM0NvbG9yU3BhY2VS
ZWYoKTsgfSB9OworI2Vsc2UKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8
Q29sb3JTcGFjZTo6RXh0ZW5kZWREaXNwbGF5UDM+IHsgfTsKICNlbmRpZgogCiAjaWYgSEFWRShD
T1JFX0dSQVBISUNTX0VYVEVOREVEX0lUVVJfMjAyMF9DT0xPUl9TUEFDRSkKIFdFQkNPUkVfRVhQ
T1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZElUVVJfMjAyMENvbG9yU3BhY2VSZWYoKTsKK3Rl
bXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWRS
ZWMyMDIwPiB7IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIHsgcmV0dXJuIGV4
dGVuZGVkSVRVUl8yMDIwQ29sb3JTcGFjZVJlZigpOyB9IH07CisjZWxzZQordGVtcGxhdGU8PiBz
dHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRlZFJlYzIwMjA+IHsg
fTsKICNlbmRpZgogCiAjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX0xJTkVBUl9TUkdC
X0NPTE9SX1NQQUNFKQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkTGlu
ZWFyU1JHQkNvbG9yU3BhY2VSZWYoKTsKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1h
cHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWRMaW5lYXJTUkdCPiB7IHN0YXRpYyBDR0NvbG9yU3Bh
Y2VSZWYgY29sb3JTcGFjZSgpIHsgcmV0dXJuIGV4dGVuZGVkTGluZWFyU1JHQkNvbG9yU3BhY2VS
ZWYoKTsgfSB9OworI2Vsc2UKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8
Q29sb3JTcGFjZTo6RXh0ZW5kZWRMaW5lYXJTUkdCPiB7IH07CiAjZW5kaWYKIAogI2lmIEhBVkUo
Q09SRV9HUkFQSElDU19FWFRFTkRFRF9ST01NUkdCX0NPTE9SX1NQQUNFKQogV0VCQ09SRV9FWFBP
UlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkUk9NTVJHQkNvbG9yU3BhY2VSZWYoKTsKK3RlbXBs
YXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWRQcm9Q
aG90b1JHQj4geyBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSB7IHJldHVybiBl
eHRlbmRlZFJPTU1SR0JDb2xvclNwYWNlUmVmKCk7IH0gfTsKKyNlbHNlCit0ZW1wbGF0ZTw+IHN0
cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkV4dGVuZGVkUHJvUGhvdG9SR0I+
IHsgfTsKICNlbmRpZgogCiAjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09M
T1JfU1BBQ0UpCiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRTUkdCQ29s
b3JTcGFjZVJlZigpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xv
clNwYWNlOjpFeHRlbmRlZFNSR0I+IHsgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNl
KCkgeyByZXR1cm4gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOyB9IH07CisjZWxzZQordGVt
cGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRlZFNS
R0I+IHsgfTsKICNlbmRpZgogCiAjaWYgSEFWRShDT1JFX0dSQVBISUNTX0lUVVJfMjAyMF9DT0xP
Ul9TUEFDRSkKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBJVFVSXzIwMjBDb2xvclNw
YWNlUmVmKCk7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3Bh
Y2U6OlJlYzIwMjA+IHsgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgeyByZXR1
cm4gSVRVUl8yMDIwQ29sb3JTcGFjZVJlZigpOyB9IH07CisjZWxzZQordGVtcGxhdGU8PiBzdHJ1
Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpSZWMyMDIwPiB7IH07CiAjZW5kaWYK
IAogI2lmIEhBVkUoQ09SRV9HUkFQSElDU19MSU5FQVJfU1JHQl9DT0xPUl9TUEFDRSkKIFdFQkNP
UkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJTUkdCQ29sb3JTcGFjZVJlZigpOwordGVt
cGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpMaW5lYXJTUkdC
PiB7IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIHsgcmV0dXJuIGxpbmVhclNS
R0JDb2xvclNwYWNlUmVmKCk7IH0gfTsKKyNlbHNlCit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9y
U3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkxpbmVhclNSR0I+IHsgfTsKICNlbmRpZgogCiAjaWYg
SEFWRShDT1JFX0dSQVBISUNTX1JPTU1SR0JfQ09MT1JfU1BBQ0UpCiBXRUJDT1JFX0VYUE9SVCBD
R0NvbG9yU3BhY2VSZWYgUk9NTVJHQkNvbG9yU3BhY2VSZWYoKTsKK3RlbXBsYXRlPD4gc3RydWN0
IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6UHJvUGhvdG9SR0I+IHsgc3RhdGljIENH
Q29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgeyByZXR1cm4gUk9NTVJHQkNvbG9yU3BhY2VSZWYo
KTsgfSB9OworI2Vsc2UKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29s
b3JTcGFjZTo6UHJvUGhvdG9SR0I+IHsgfTsKICNlbmRpZgogCi0jaWYgSEFWRShDT1JFX0dSQVBI
SUNTX1hZWl9DT0xPUl9TUEFDRSkKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfWFlaX0Q1MF9DT0xP
Ul9TUEFDRSkKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiB4eXpENTBDb2xvclNwYWNl
UmVmKCk7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6
OlhZWl9ENTA+IHsgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgeyByZXR1cm4g
eHl6RDUwQ29sb3JTcGFjZVJlZigpOyB9IH07CisjZWxzZQordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dD
b2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpYWVpfRDUwPiB7IH07CiAjZW5kaWYKIAorLy8g
RklYTUU6IEFkZCBzdXBwb3J0IGZvciB0aGVzZSBvbmNlL2lmIENvcmVHcmFwaGljcyBhZGRzIHN1
cHBvcnQgZm9yIHRoZW0uCit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENv
bG9yU3BhY2U6OkhTTD4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGlu
ZzxDb2xvclNwYWNlOjpIV0I+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1h
cHBpbmc8Q29sb3JTcGFjZTo6TENIPiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3Bh
Y2VNYXBwaW5nPENvbG9yU3BhY2U6OkxhYj4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xv
clNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpPS0xhYj4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3Qg
Q0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpPS0xDSD4geyB9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpYWVpfRDY1PiB7IH07CisKKwog
c3RkOjpvcHRpb25hbDxDb2xvclNwYWNlPiBjb2xvclNwYWNlRm9yQ0dDb2xvclNwYWNlKENHQ29s
b3JTcGFjZVJlZik7CiAKKworc3RydWN0IEhhc0NHQ29sb3JTcGFjZU1hcHBpbmdIZWxwZXIgewor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgVHJ1ZUlmRGVmaW5lZCA6IHN0ZDo6dHJ1ZV90
eXBlIHsgfTsKKyAgICB0ZW1wbGF0ZTxDb2xvclNwYWNlIEM+IHN0YXRpYyBhdXRvIHRlc3QoaW50
KSAtPiBUcnVlSWZEZWZpbmVkPGRlY2x0eXBlKENHQ29sb3JTcGFjZU1hcHBpbmc8Qz46OmNvbG9y
U3BhY2UoKSk+OworICAgIHRlbXBsYXRlPENvbG9yU3BhY2UgQz4gc3RhdGljIGF1dG8gdGVzdChs
b25nKSAtPiBzdGQ6OmZhbHNlX3R5cGU7Cit9OworCit0ZW1wbGF0ZTxDb2xvclNwYWNlIEM+IGlu
bGluZSBjb25zdGV4cHIgYm9vbCBIYXNDR0NvbG9yU3BhY2VNYXBwaW5nID0gc3RkOjppc19zYW1l
X3Y8ZGVjbHR5cGUoSGFzQ0dDb2xvclNwYWNlTWFwcGluZ0hlbHBlcjo6dGVzdDxDPigwKSksIHN0
ZDo6dHJ1ZV90eXBlPjsKKwordGVtcGxhdGU8Q29sb3JTcGFjZSBDLCBib29sID0gSGFzQ0dDb2xv
clNwYWNlTWFwcGluZzxDPj4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmdHZXR0ZXIgeyBzdGF0
aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSB7IHJldHVybiBudWxscHRyOyB9IH07Cit0
ZW1wbGF0ZTxDb2xvclNwYWNlIEM+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nR2V0dGVyPEMs
IHRydWU+IHsgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgeyByZXR1cm4gQ0dD
b2xvclNwYWNlTWFwcGluZzxDPjo6Y29sb3JTcGFjZSgpOyB9IH07CisKK3RlbXBsYXRlPENvbG9y
U3BhY2UgY29sb3JTcGFjZT4gQ0dDb2xvclNwYWNlUmVmIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNw
YWNlKCkKK3sKKyAgICByZXR1cm4gQ0dDb2xvclNwYWNlTWFwcGluZ0dldHRlcjxjb2xvclNwYWNl
Pjo6Y29sb3JTcGFjZSgpOworfQorCiBzdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNo
ZWROdWxsYWJsZUNHQ29sb3JTcGFjZShDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgc3dp
dGNoIChjb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICBy
ZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLQogICAgIGNhc2UgQ29sb3JTcGFjZTo6QTk4UkdC
OgotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19BRE9CRV9SR0JfMTk5OF9DT0xPUl9TUEFDRSkKLSAg
ICAgICAgcmV0dXJuIGFkb2JlUkdCMTk5OENvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotI2VuZGlmCi0KKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxl
Q0dDb2xvclNwYWNlPENvbG9yU3BhY2U6OkE5OFJHQj4oKTsKICAgICBjYXNlIENvbG9yU3BhY2U6
OkRpc3BsYXlQMzoKLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfRElTUExBWV9QM19DT0xPUl9TUEFD
RSkKLSAgICAgICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi0KKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxh
YmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6OkRpc3BsYXlQMz4oKTsKICAgICBjYXNlIENvbG9y
U3BhY2U6OkV4dGVuZGVkQTk4UkdCOgotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9B
RE9CRV9SR0JfMTk5OF9DT0xPUl9TUEFDRSkKLSAgICAgICAgcmV0dXJuIGV4dGVuZGVkQWRvYmVS
R0IxOTk4Q29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0j
ZW5kaWYKLQorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8Q29sb3JT
cGFjZTo6RXh0ZW5kZWRBOThSR0I+KCk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpFeHRlbmRlZERp
c3BsYXlQMzoKLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfRElTUExBWV9QM19DT0xP
Ul9TUEFDRSkKLSAgICAgICAgcmV0dXJuIGV4dGVuZGVkRGlzcGxheVAzQ29sb3JTcGFjZVJlZigp
OwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLQorICAgICAgICByZXR1
cm4gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8Q29sb3JTcGFjZTo6RXh0ZW5kZWREaXNwbGF5
UDM+KCk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpFeHRlbmRlZExpbmVhclNSR0I6Ci0jaWYgSEFW
RShDT1JFX0dSQVBISUNTX0VYVEVOREVEX0xJTkVBUl9TUkdCX0NPTE9SX1NQQUNFKQotICAgICAg
ICByZXR1cm4gZXh0ZW5kZWRMaW5lYXJTUkdCQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLQorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFi
bGVDR0NvbG9yU3BhY2U8Q29sb3JTcGFjZTo6RXh0ZW5kZWRMaW5lYXJTUkdCPigpOwogICAgIGNh
c2UgQ29sb3JTcGFjZTo6RXh0ZW5kZWRQcm9QaG90b1JHQjoKLSNpZiBIQVZFKENPUkVfR1JBUEhJ
Q1NfRVhURU5ERURfUk9NTVJHQl9DT0xPUl9TUEFDRSkKLSAgICAgICAgcmV0dXJuIGV4dGVuZGVk
Uk9NTVJHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
I2VuZGlmCi0KKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9y
U3BhY2U6OkV4dGVuZGVkUHJvUGhvdG9SR0I+KCk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpFeHRl
bmRlZFJlYzIwMjA6Ci0jaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX0lUVVJfMjAyMF9D
T0xPUl9TUEFDRSkKLSAgICAgICAgcmV0dXJuIGV4dGVuZGVkSVRVUl8yMDIwQ29sb3JTcGFjZVJl
ZigpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLQorICAgICAgICBy
ZXR1cm4gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8Q29sb3JTcGFjZTo6RXh0ZW5kZWRSZWMy
MDIwPigpOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6RXh0ZW5kZWRTUkdCOgotI2lmIEhBVkUoQ09S
RV9HUkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQotICAgICAgICByZXR1cm4gZXh0
ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0jZW5kaWYKLQotICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSNpZiBIQVZFKENP
UkVfR1JBUEhJQ1NfTElORUFSX1NSR0JfQ09MT1JfU1BBQ0UpCi0gICAgICAgIHJldHVybiBsaW5l
YXJTUkdCQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0j
ZW5kaWYKLQotICAgIGNhc2UgQ29sb3JTcGFjZTo6UHJvUGhvdG9SR0I6Ci0jaWYgSEFWRShDT1JF
X0dSQVBISUNTX1JPTU1SR0JfQ09MT1JfU1BBQ0UpCi0gICAgICAgIHJldHVybiBST01NUkdCQ29s
b3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLQot
ICAgIGNhc2UgQ29sb3JTcGFjZTo6UmVjMjAyMDoKLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfSVRV
Ul8yMDIwX0NPTE9SX1NQQUNFKQotICAgICAgICByZXR1cm4gSVRVUl8yMDIwQ29sb3JTcGFjZVJl
ZigpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLQotICAgIGNhc2Ug
Q29sb3JTcGFjZTo6WFlaX0Q1MDoKLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfWFlaX0NPTE9SX1NQ
QUNFKQotICAgICAgICByZXR1cm4geHl6RDUwQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLQotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBm
b3IgdGhlc2Ugb25jZS9pZiBDb3JlR3JhcGhpY3MgYWRkcyBzdXBwb3J0IGZvciBpdC4KKyAgICAg
ICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6OkV4dGVuZGVk
U1JHQj4oKTsKICAgICBjYXNlIENvbG9yU3BhY2U6OkhTTDoKKyAgICAgICAgcmV0dXJuIGNhY2hl
ZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6OkhTTD4oKTsKICAgICBjYXNlIENvbG9y
U3BhY2U6OkhXQjoKKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENv
bG9yU3BhY2U6OkhXQj4oKTsKICAgICBjYXNlIENvbG9yU3BhY2U6OkxDSDoKKyAgICAgICAgcmV0
dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6OkxDSD4oKTsKICAgICBj
YXNlIENvbG9yU3BhY2U6OkxhYjoKKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xv
clNwYWNlPENvbG9yU3BhY2U6OkxhYj4oKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclNS
R0I6CisgICAgICAgIHJldHVybiBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNl
OjpMaW5lYXJTUkdCPigpOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6T0tMQ0g6CisgICAgICAgIHJl
dHVybiBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNlOjpPS0xDSD4oKTsKICAg
ICBjYXNlIENvbG9yU3BhY2U6Ok9LTGFiOgorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFibGVD
R0NvbG9yU3BhY2U8Q29sb3JTcGFjZTo6T0tMYWI+KCk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpQ
cm9QaG90b1JHQjoKKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENv
bG9yU3BhY2U6OlByb1Bob3RvUkdCPigpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6UmVjMjAyMDoK
KyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6OlJl
YzIwMjA+KCk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgorICAgICAgICByZXR1cm4gY2Fj
aGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8Q29sb3JTcGFjZTo6U1JHQj4oKTsKKyAgICBjYXNlIENv
bG9yU3BhY2U6OlhZWl9ENTA6CisgICAgICAgIHJldHVybiBjYWNoZWROdWxsYWJsZUNHQ29sb3JT
cGFjZTxDb2xvclNwYWNlOjpYWVpfRDUwPigpOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6WFlaX0Q2
NToKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLQorICAgICAgICByZXR1cm4gY2FjaGVkTnVs
bGFibGVDR0NvbG9yU3BhY2U8Q29sb3JTcGFjZTo6WFlaX0Q2NT4oKTsKICAgICB9CisKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448694</attachid>
            <date>2022-01-08 19:59:01 -0800</date>
            <delta_ts>2022-01-09 09:27:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>colodSpaceCG.diff</filename>
            <type>text/plain</type>
            <size>15001</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODc4MTIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAxLTA4ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaGVscGVycyB0byBhY2Nlc3MgQ29yZUdyYXBoaWNz
IGNvbG9yIHNwYWNlcyBtb3JlIGVhc2lseSBpbiBnZW5lcmljIGNvbnRleHRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUu
aDoKKyAgICAgICAgVXBkYXRlIGhhdmUgbWFjcm8sIEhBVkVfQ09SRV9HUkFQSElDU19YWVpfQ09M
T1JfU1BBQ0UsIHRvIGhhdmUgYSBtb3JlIHNwZWNpZmljIG5hbWUsCisgICAgICAgIEhBVkVfQ09S
RV9HUkFQSElDU19YWVpfRDUwX0NPTE9SX1NQQUNFLCB3aGljaCBpcyByZWFsbHkgd2hhdCBpdCBp
cy4KKwogMjAyMi0wMS0wNyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZG9wdCBsaW5rZWRPbk9yQWZ0ZXIoKSBpbiBtb3JlIHBsYWNlcwpJbmRleDog
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvUGxhdGZvcm1IYXZlLmgJKHJldmlzaW9uIDI4NzgxMSkKKysrIFNvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtSGF2ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MDUsNyArOTA1LDcgQEAKICNkZWZpbmUg
SEFWRV9DT1JFX0dSQVBISUNTX0lUVVJfMjAyMF9DT0xPUl9TUEFDRSAxCiAjZGVmaW5lIEhBVkVf
Q09SRV9HUkFQSElDU19MSU5FQVJfU1JHQl9DT0xPUl9TUEFDRSAxCiAjZGVmaW5lIEhBVkVfQ09S
RV9HUkFQSElDU19ST01NUkdCX0NPTE9SX1NQQUNFIDEKLSNkZWZpbmUgSEFWRV9DT1JFX0dSQVBI
SUNTX1hZWl9DT0xPUl9TUEFDRSAxCisjZGVmaW5lIEhBVkVfQ09SRV9HUkFQSElDU19YWVpfRDUw
X0NPTE9SX1NQQUNFIDEKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
Mjg3ODEyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzYgQEAKKzIwMjItMDEtMDggIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBoZWxwZXJzIHRvIGFjY2VzcyBDb3JlR3JhcGhpY3MgY29sb3Igc3BhY2Vz
IG1vcmUgZWFzaWx5IGluIGdlbmVyaWMgY29udGV4dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzb21lIHN0cnVjdHMgYW5kIHR5cGUgdHJhaXQg
aGVscGVycyB0byBhbGxvdyBhY2Nlc3NpbmcgdGhlIENvcmVHcmFwaGljcworICAgICAgICBDR0Nv
bG9yU3BhY2VSZWYgYXNzb2NpYXRlZCB3aXRoIGEgQ29sb3JTcGFjZSBlbnVtIHZhbHVlIGF0IGNv
bXBpbGUgdGltZS4gVGhpcworICAgICAgICB3aWxsIGJlIHVzZWZ1bCBmb3IgZ2VuZXJhbGl6aW5n
IHNvbWUgb2YgdGhlIGdyYWRpZW50IHJlbmRlcmluZyBjb2RlIG9wdGltaXphdGlvbnMKKyAgICAg
ICAgSSBoYXZlIHBsYW5uZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
ckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpjcmVhdGVBbmRMb3NzbGVzc2x5Q29u
dmVydFRvU3VwcG9ydGVkQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9yU3BhY2VGb3JDR0Nv
bG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5o
OgorICAgICAgICAoV2ViQ29yZTo6Q0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpTUkdC
Pjo6Y29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbG9yU3BhY2VNYXBwaW5nPENv
bG9yU3BhY2U6OkE5OFJHQj46OmNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0dDb2xv
clNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpEaXNwbGF5UDM+Ojpjb2xvclNwYWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWRBOThS
R0I+Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29sb3JTcGFjZU1hcHBpbmc8
Q29sb3JTcGFjZTo6RXh0ZW5kZWREaXNwbGF5UDM+Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWRSZWMyMDIwPjo6
Y29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9y
U3BhY2U6OkV4dGVuZGVkTGluZWFyU1JHQj46OmNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRlZFByb1Bob3RvUkdCPjo6
Y29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9y
U3BhY2U6OkV4dGVuZGVkU1JHQj46OmNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0dD
b2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpSZWMyMDIwPjo6Y29sb3JTcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkxpbmVhclNSR0I+
Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29sb3JTcGFjZU1hcHBpbmc8Q29s
b3JTcGFjZTo6UHJvUGhvdG9SR0I+Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNH
Q29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6WFlaX0Q1MD46OmNvbG9yU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0dDb2xvclNwYWNlTWFwcGluZ0dldHRlcjo6Y29sb3JTcGFjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZSk6CisKIDIwMjItMDEt
MDggIEdhYnJpZWwgTmF2YSBNYXJpbm8gIDxnbmF2YW1hcmlub0BhcHBsZS5jb20+CiAKICAgICAg
ICAgbnVsbCBwdHIgZGVyZWYgaW4gV2ViQ29yZTo6TW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsQ29t
bWFuZDo6YXBwZW5kU2libGluZ05vZGVSYW5nZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCShyZXZpc2lvbiAyODc4
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgQ0dDb2xvclNwYWNlUmVmIFJP
TU1SR0JDb2xvclNwYWNlUmVmKCkKIH0KICNlbmRpZgogCi0jaWYgSEFWRShDT1JFX0dSQVBISUNT
X1hZWl9DT0xPUl9TUEFDRSkKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfWFlaX0Q1MF9DT0xPUl9T
UEFDRSkKIENHQ29sb3JTcGFjZVJlZiB4eXpENTBDb2xvclNwYWNlUmVmKCkKIHsKICAgICByZXR1
cm4gbmFtZWRDb2xvclNwYWNlPGtDR0NvbG9yU3BhY2VHZW5lcmljWFlaPigpOwpAQCAtMjE2LDcg
KzIxNiw3IEBAIHN0ZDo6b3B0aW9uYWw8Q29sb3JTcGFjZT4gY29sb3JTcGFjZUZvckNHQ29sb3JT
cGFjZShDRwogICAgICAgICByZXR1cm4gQ29sb3JTcGFjZTo6UHJvUGhvdG9SR0I7CiAjZW5kaWYK
IAotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19YWVpfQ09MT1JfU1BBQ0UpCisjaWYgSEFWRShDT1JF
X0dSQVBISUNTX1hZWl9ENTBfQ09MT1JfU1BBQ0UpCiAgICAgaWYgKENHQ29sb3JTcGFjZUVxdWFs
VG9Db2xvclNwYWNlKGNvbG9yU3BhY2UsIHh5ekQ1MENvbG9yU3BhY2VSZWYoKSkpCiAgICAgICAg
IHJldHVybiBDb2xvclNwYWNlOjpYWVpfRDUwOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkocmV2aXNpb24g
Mjg3ODExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFj
ZUNHLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE2MCArMzQsMTcwIEBAIFdURl9ERUNMQVJFX0NG
X1RZUEVfVFJBSVQoQ0dDb2xvclNwYWNlKTsKCiBuYW1lc3BhY2UgV2ViQ29yZSB7CgordGVtcGxh
dGU8Q29sb3JTcGFjZT4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc7CisKIFdFQkNPUkVfRVhQ
T1JUIENHQ29sb3JTcGFjZVJlZiBzUkdCQ29sb3JTcGFjZVJlZigpOwordGVtcGxhdGU8PiBzdHJ1
Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpTUkdCPiB7IHN0YXRpYyBDR0NvbG9y
U3BhY2VSZWYgY29sb3JTcGFjZSgpIHsgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7IH0gfTsK
CiAjaWYgSEFWRShDT1JFX0dSQVBISUNTX0FET0JFX1JHQl8xOTk4X0NPTE9SX1NQQUNFKQogV0VC
Q09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGFkb2JlUkdCMTk5OENvbG9yU3BhY2VSZWYoKTsK
K3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6QTk4UkdC
PiB7IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIHsgcmV0dXJuIGFkb2JlUkdC
MTk5OENvbG9yU3BhY2VSZWYoKTsgfSB9OworI2Vsc2UKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29s
b3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6QTk4UkdCPiB7IH07CiAjZW5kaWYKCiAjaWYgSEFW
RShDT1JFX0dSQVBISUNTX0RJU1BMQVlfUDNfQ09MT1JfU1BBQ0UpCiBXRUJDT1JFX0VYUE9SVCBD
R0NvbG9yU3BhY2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwordGVtcGxhdGU8PiBzdHJ1
Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpEaXNwbGF5UDM+IHsgc3RhdGljIENH
Q29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgeyByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJl
ZigpOyB9IH07CisjZWxzZQordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxD
b2xvclNwYWNlOjpEaXNwbGF5UDM+IHsgfTsKICNlbmRpZgoKICNpZiBIQVZFKENPUkVfR1JBUEhJ
Q1NfRVhURU5ERURfQURPQkVfUkdCXzE5OThfQ09MT1JfU1BBQ0UpCiBXRUJDT1JFX0VYUE9SVCBD
R0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRBZG9iZVJHQjE5OThDb2xvclNwYWNlUmVmKCk7Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkV4dGVuZGVkQTk4
UkdCPiB7IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIHsgcmV0dXJuIGV4dGVu
ZGVkQWRvYmVSR0IxOTk4Q29sb3JTcGFjZVJlZigpOyB9IH07CisjZWxzZQordGVtcGxhdGU8PiBz
dHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRlZEE5OFJHQj4geyB9
OwogI2VuZGlmCgogI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9ESVNQTEFZX1AzX0NP
TE9SX1NQQUNFKQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkRGlzcGxh
eVAzQ29sb3JTcGFjZVJlZigpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGlu
ZzxDb2xvclNwYWNlOjpFeHRlbmRlZERpc3BsYXlQMz4geyBzdGF0aWMgQ0dDb2xvclNwYWNlUmVm
IGNvbG9yU3BhY2UoKSB7IHJldHVybiBleHRlbmRlZERpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsg
fSB9OworI2Vsc2UKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JT
cGFjZTo6RXh0ZW5kZWREaXNwbGF5UDM+IHsgfTsKICNlbmRpZgoKICNpZiBIQVZFKENPUkVfR1JB
UEhJQ1NfRVhURU5ERURfSVRVUl8yMDIwX0NPTE9SX1NQQUNFKQogV0VCQ09SRV9FWFBPUlQgQ0dD
b2xvclNwYWNlUmVmIGV4dGVuZGVkSVRVUl8yMDIwQ29sb3JTcGFjZVJlZigpOwordGVtcGxhdGU8
PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRlZFJlYzIwMjA+
IHsgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgeyByZXR1cm4gZXh0ZW5kZWRJ
VFVSXzIwMjBDb2xvclNwYWNlUmVmKCk7IH0gfTsKKyNlbHNlCit0ZW1wbGF0ZTw+IHN0cnVjdCBD
R0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkV4dGVuZGVkUmVjMjAyMD4geyB9OwogI2Vu
ZGlmCgogI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9MSU5FQVJfU1JHQl9DT0xPUl9T
UEFDRSkKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZExpbmVhclNSR0JD
b2xvclNwYWNlUmVmKCk7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENv
bG9yU3BhY2U6OkV4dGVuZGVkTGluZWFyU1JHQj4geyBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNv
bG9yU3BhY2UoKSB7IHJldHVybiBleHRlbmRlZExpbmVhclNSR0JDb2xvclNwYWNlUmVmKCk7IH0g
fTsKKyNlbHNlCit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3Bh
Y2U6OkV4dGVuZGVkTGluZWFyU1JHQj4geyB9OwogI2VuZGlmCgogI2lmIEhBVkUoQ09SRV9HUkFQ
SElDU19FWFRFTkRFRF9ST01NUkdCX0NPTE9SX1NQQUNFKQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xv
clNwYWNlUmVmIGV4dGVuZGVkUk9NTVJHQkNvbG9yU3BhY2VSZWYoKTsKK3RlbXBsYXRlPD4gc3Ry
dWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWRQcm9QaG90b1JHQj4g
eyBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSB7IHJldHVybiBleHRlbmRlZFJP
TU1SR0JDb2xvclNwYWNlUmVmKCk7IH0gfTsKKyNlbHNlCit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0Nv
bG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkV4dGVuZGVkUHJvUGhvdG9SR0I+IHsgfTsKICNl
bmRpZgoKICNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkK
IFdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVm
KCk7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkV4
dGVuZGVkU1JHQj4geyBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSB7IHJldHVy
biBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7IH0gfTsKKyNlbHNlCit0ZW1wbGF0ZTw+IHN0
cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkV4dGVuZGVkU1JHQj4geyB9Owog
I2VuZGlmCgogI2lmIEhBVkUoQ09SRV9HUkFQSElDU19JVFVSXzIwMjBfQ09MT1JfU1BBQ0UpCiBX
RUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgSVRVUl8yMDIwQ29sb3JTcGFjZVJlZigpOwor
dGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpSZWMyMDIw
PiB7IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIHsgcmV0dXJuIElUVVJfMjAy
MENvbG9yU3BhY2VSZWYoKTsgfSB9OworI2Vsc2UKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JT
cGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6UmVjMjAyMD4geyB9OwogI2VuZGlmCgogI2lmIEhBVkUo
Q09SRV9HUkFQSElDU19MSU5FQVJfU1JHQl9DT0xPUl9TUEFDRSkKIFdFQkNPUkVfRVhQT1JUIENH
Q29sb3JTcGFjZVJlZiBsaW5lYXJTUkdCQ29sb3JTcGFjZVJlZigpOwordGVtcGxhdGU8PiBzdHJ1
Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpMaW5lYXJTUkdCPiB7IHN0YXRpYyBD
R0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIHsgcmV0dXJuIGxpbmVhclNSR0JDb2xvclNwYWNl
UmVmKCk7IH0gfTsKKyNlbHNlCit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5n
PENvbG9yU3BhY2U6OkxpbmVhclNSR0I+IHsgfTsKICNlbmRpZgoKICNpZiBIQVZFKENPUkVfR1JB
UEhJQ1NfUk9NTVJHQl9DT0xPUl9TUEFDRSkKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJl
ZiBST01NUkdCQ29sb3JTcGFjZVJlZigpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNl
TWFwcGluZzxDb2xvclNwYWNlOjpQcm9QaG90b1JHQj4geyBzdGF0aWMgQ0dDb2xvclNwYWNlUmVm
IGNvbG9yU3BhY2UoKSB7IHJldHVybiBST01NUkdCQ29sb3JTcGFjZVJlZigpOyB9IH07CisjZWxz
ZQordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpQcm9Q
aG90b1JHQj4geyB9OwogI2VuZGlmCgotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19YWVpfQ09MT1Jf
U1BBQ0UpCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX1hZWl9ENTBfQ09MT1JfU1BBQ0UpCiBXRUJD
T1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgeHl6RDUwQ29sb3JTcGFjZVJlZigpOwordGVtcGxh
dGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpYWVpfRDUwPiB7IHN0
YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIHsgcmV0dXJuIHh5ekQ1MENvbG9yU3Bh
Y2VSZWYoKTsgfSB9OworI2Vsc2UKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBp
bmc8Q29sb3JTcGFjZTo6WFlaX0Q1MD4geyB9OwogI2VuZGlmCgorLy8gRklYTUU6IEFkZCBzdXBw
b3J0IGZvciB0aGVzZSBvbmNlL2lmIENvcmVHcmFwaGljcyBhZGRzIHN1cHBvcnQgZm9yIHRoZW0u
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkhTTD4g
eyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpI
V0I+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFj
ZTo6TENIPiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9y
U3BhY2U6OkxhYj4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxD
b2xvclNwYWNlOjpPS0xhYj4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFw
cGluZzxDb2xvclNwYWNlOjpPS0xDSD4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNw
YWNlTWFwcGluZzxDb2xvclNwYWNlOjpYWVpfRDY1PiB7IH07CisKKwogc3RkOjpvcHRpb25hbDxD
b2xvclNwYWNlPiBjb2xvclNwYWNlRm9yQ0dDb2xvclNwYWNlKENHQ29sb3JTcGFjZVJlZik7Cgor
CitzdHJ1Y3QgSGFzQ0dDb2xvclNwYWNlTWFwcGluZ0hlbHBlciB7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWU+IHN0cnVjdCBUcnVlSWZEZWZpbmVkIDogc3RkOjp0cnVlX3R5cGUgeyB9OworICAgIHRl
bXBsYXRlPENvbG9yU3BhY2UgQz4gc3RhdGljIGF1dG8gdGVzdChpbnQpIC0+IFRydWVJZkRlZmlu
ZWQ8ZGVjbHR5cGUoQ0dDb2xvclNwYWNlTWFwcGluZzxDPjo6Y29sb3JTcGFjZSgpKT47CisgICAg
dGVtcGxhdGU8Q29sb3JTcGFjZSBDPiBzdGF0aWMgYXV0byB0ZXN0KGxvbmcpIC0+IHN0ZDo6ZmFs
c2VfdHlwZTsKK307CisKK3RlbXBsYXRlPENvbG9yU3BhY2UgQz4gaW5saW5lIGNvbnN0ZXhwciBi
b29sIEhhc0NHQ29sb3JTcGFjZU1hcHBpbmcgPSBkZWNsdHlwZShIYXNDR0NvbG9yU3BhY2VNYXBw
aW5nSGVscGVyOjp0ZXN0PEM+KDApKSgpOworc3RhdGljX2Fzc2VydChIYXNDR0NvbG9yU3BhY2VN
YXBwaW5nPENvbG9yU3BhY2U6OlNSR0I+LCAiQW4gU1JHQiBjb2xvciBzcGFjZSBtYXBwaW5nIG11
c3QgYmUgc3VwcG9ydGVkIG9uIGFsbCBwbGF0Zm9ybXMuIik7CisKK3RlbXBsYXRlPENvbG9yU3Bh
Y2UgQywgYm9vbCA9IEhhc0NHQ29sb3JTcGFjZU1hcHBpbmc8Qz4+IHN0cnVjdCBDR0NvbG9yU3Bh
Y2VNYXBwaW5nR2V0dGVyIHsgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfSB9OwordGVtcGxhdGU8Q29sb3JTcGFjZSBDPiBzdHJ1Y3QgQ0dDb2xv
clNwYWNlTWFwcGluZ0dldHRlcjxDLCB0cnVlPiB7IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29s
b3JTcGFjZSgpIHsgcmV0dXJuIENHQ29sb3JTcGFjZU1hcHBpbmc8Qz46OmNvbG9yU3BhY2UoKTsg
fSB9OworCit0ZW1wbGF0ZTxDb2xvclNwYWNlIGNvbG9yU3BhY2U+IENHQ29sb3JTcGFjZVJlZiBj
YWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZSgpCit7CisgICAgcmV0dXJuIENHQ29sb3JTcGFjZU1h
cHBpbmdHZXR0ZXI8Y29sb3JTcGFjZT46OmNvbG9yU3BhY2UoKTsKK30KKwogc3RhdGljIGlubGlu
ZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2UoQ29sb3JTcGFjZSBj
b2xvclNwYWNlKQogewogICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgQ29sb3JT
cGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0KICAgICBj
YXNlIENvbG9yU3BhY2U6OkE5OFJHQjoKLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfQURPQkVfUkdC
XzE5OThfQ09MT1JfU1BBQ0UpCi0gICAgICAgIHJldHVybiBhZG9iZVJHQjE5OThDb2xvclNwYWNl
UmVmKCk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotCisgICAgICAg
IHJldHVybiBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNlOjpBOThSR0I+KCk7
CiAgICAgY2FzZSBDb2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0jaWYgSEFWRShDT1JFX0dSQVBISUNT
X0RJU1BMQVlfUDNfQ09MT1JfU1BBQ0UpCi0gICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNw
YWNlUmVmKCk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotCisgICAg
ICAgIHJldHVybiBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNlOjpEaXNwbGF5
UDM+KCk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpFeHRlbmRlZEE5OFJHQjoKLSNpZiBIQVZFKENP
UkVfR1JBUEhJQ1NfRVhURU5ERURfQURPQkVfUkdCXzE5OThfQ09MT1JfU1BBQ0UpCi0gICAgICAg
IHJldHVybiBleHRlbmRlZEFkb2JlUkdCMTk5OENvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi0KKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxh
YmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6OkV4dGVuZGVkQTk4UkdCPigpOwogICAgIGNhc2Ug
Q29sb3JTcGFjZTo6RXh0ZW5kZWREaXNwbGF5UDM6Ci0jaWYgSEFWRShDT1JFX0dSQVBISUNTX0VY
VEVOREVEX0RJU1BMQVlfUDNfQ09MT1JfU1BBQ0UpCi0gICAgICAgIHJldHVybiBleHRlbmRlZERp
c3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
I2VuZGlmCi0KKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9y
U3BhY2U6OkV4dGVuZGVkRGlzcGxheVAzPigpOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6RXh0ZW5k
ZWRMaW5lYXJTUkdCOgotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9MSU5FQVJfU1JH
Ql9DT0xPUl9TUEFDRSkKLSAgICAgICAgcmV0dXJuIGV4dGVuZGVkTGluZWFyU1JHQkNvbG9yU3Bh
Y2VSZWYoKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi0KKyAgICAg
ICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6OkV4dGVuZGVk
TGluZWFyU1JHQj4oKTsKICAgICBjYXNlIENvbG9yU3BhY2U6OkV4dGVuZGVkUHJvUGhvdG9SR0I6
Ci0jaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1JPTU1SR0JfQ09MT1JfU1BBQ0UpCi0g
ICAgICAgIHJldHVybiBleHRlbmRlZFJPTU1SR0JDb2xvclNwYWNlUmVmKCk7Ci0jZWxzZQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotCisgICAgICAgIHJldHVybiBjYWNoZWROdWxs
YWJsZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNlOjpFeHRlbmRlZFByb1Bob3RvUkdCPigpOwogICAg
IGNhc2UgQ29sb3JTcGFjZTo6RXh0ZW5kZWRSZWMyMDIwOgotI2lmIEhBVkUoQ09SRV9HUkFQSElD
U19FWFRFTkRFRF9JVFVSXzIwMjBfQ09MT1JfU1BBQ0UpCi0gICAgICAgIHJldHVybiBleHRlbmRl
ZElUVVJfMjAyMENvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotI2VuZGlmCi0KKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENv
bG9yU3BhY2U6OkV4dGVuZGVkUmVjMjAyMD4oKTsKICAgICBjYXNlIENvbG9yU3BhY2U6OkV4dGVu
ZGVkU1JHQjoKLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFD
RSkKLSAgICAgICAgcmV0dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi0KLSAgICBjYXNlIENvbG9yU3BhY2U6Okxp
bmVhclNSR0I6Ci0jaWYgSEFWRShDT1JFX0dSQVBISUNTX0xJTkVBUl9TUkdCX0NPTE9SX1NQQUNF
KQotICAgICAgICByZXR1cm4gbGluZWFyU1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi0KLSAgICBjYXNlIENvbG9yU3BhY2U6OlByb1Bo
b3RvUkdCOgotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19ST01NUkdCX0NPTE9SX1NQQUNFKQotICAg
ICAgICByZXR1cm4gUk9NTVJHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotI2VuZGlmCi0KLSAgICBjYXNlIENvbG9yU3BhY2U6OlJlYzIwMjA6Ci0jaWYg
SEFWRShDT1JFX0dSQVBISUNTX0lUVVJfMjAyMF9DT0xPUl9TUEFDRSkKLSAgICAgICAgcmV0dXJu
IElUVVJfMjAyMENvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotI2VuZGlmCi0KLSAgICBjYXNlIENvbG9yU3BhY2U6OlhZWl9ENTA6Ci0jaWYgSEFWRShDT1JF
X0dSQVBISUNTX1hZWl9DT0xPUl9TUEFDRSkKLSAgICAgICAgcmV0dXJuIHh5ekQ1MENvbG9yU3Bh
Y2VSZWYoKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi0KLSAgICAv
LyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHRoZXNlIG9uY2UvaWYgQ29yZUdyYXBoaWNzIGFkZHMg
c3VwcG9ydCBmb3IgaXQuCisgICAgICAgIHJldHVybiBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFj
ZTxDb2xvclNwYWNlOjpFeHRlbmRlZFNSR0I+KCk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpIU0w6
CisgICAgICAgIHJldHVybiBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNlOjpI
U0w+KCk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpIV0I6CisgICAgICAgIHJldHVybiBjYWNoZWRO
dWxsYWJsZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNlOjpIV0I+KCk7CiAgICAgY2FzZSBDb2xvclNw
YWNlOjpMQ0g6CisgICAgICAgIHJldHVybiBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZTxDb2xv
clNwYWNlOjpMQ0g+KCk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpMYWI6CisgICAgICAgIHJldHVy
biBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNlOjpMYWI+KCk7CisgICAgY2Fz
ZSBDb2xvclNwYWNlOjpMaW5lYXJTUkdCOgorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFibGVD
R0NvbG9yU3BhY2U8Q29sb3JTcGFjZTo6TGluZWFyU1JHQj4oKTsKICAgICBjYXNlIENvbG9yU3Bh
Y2U6Ok9LTENIOgorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8Q29s
b3JTcGFjZTo6T0tMQ0g+KCk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpPS0xhYjoKKyAgICAgICAg
cmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6Ok9LTGFiPigpOwor
ICAgIGNhc2UgQ29sb3JTcGFjZTo6UHJvUGhvdG9SR0I6CisgICAgICAgIHJldHVybiBjYWNoZWRO
dWxsYWJsZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNlOjpQcm9QaG90b1JHQj4oKTsKKyAgICBjYXNl
IENvbG9yU3BhY2U6OlJlYzIwMjA6CisgICAgICAgIHJldHVybiBjYWNoZWROdWxsYWJsZUNHQ29s
b3JTcGFjZTxDb2xvclNwYWNlOjpSZWMyMDIwPigpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6U1JH
QjoKKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6
OlNSR0I+KCk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpYWVpfRDUwOgorICAgICAgICByZXR1cm4g
Y2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8Q29sb3JTcGFjZTo6WFlaX0Q1MD4oKTsKICAgICBj
YXNlIENvbG9yU3BhY2U6OlhZWl9ENjU6Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0KKyAg
ICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6OlhZWl9E
NjU+KCk7CiAgICAgfQorCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9Cg==
</data>
<flag name="review"
          id="474617"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448706</attachid>
            <date>2022-01-09 09:27:56 -0800</date>
            <delta_ts>2022-01-09 09:46:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>cgColorSpace.diff</filename>
            <type>text/plain</type>
            <size>14388</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODc4MTIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAxLTA4ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaGVscGVycyB0byBhY2Nlc3MgQ29yZUdyYXBoaWNz
IGNvbG9yIHNwYWNlcyBtb3JlIGVhc2lseSBpbiBnZW5lcmljIGNvbnRleHRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDQKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoK
KyAgICAgICAgVXBkYXRlIGhhdmUgbWFjcm8sIEhBVkVfQ09SRV9HUkFQSElDU19YWVpfQ09MT1Jf
U1BBQ0UsIHRvIGhhdmUgYSBtb3JlIHNwZWNpZmljIG5hbWUsCisgICAgICAgIEhBVkVfQ09SRV9H
UkFQSElDU19YWVpfRDUwX0NPTE9SX1NQQUNFLCB3aGljaCBpcyByZWFsbHkgd2hhdCBpdCBpcy4K
KwogMjAyMi0wMS0wNyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZG9wdCBsaW5rZWRPbk9yQWZ0ZXIoKSBpbiBtb3JlIHBsYWNlcwpJbmRleDogU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjg3ODE1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjItMDEtMDggIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBoZWxwZXJzIHRvIGFjY2VzcyBDb3JlR3JhcGhp
Y3MgY29sb3Igc3BhY2VzIG1vcmUgZWFzaWx5IGluIGdlbmVyaWMgY29udGV4dHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAwNAorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZCBzb21lIHN0cnVjdHMgYW5k
IHR5cGUgdHJhaXQgaGVscGVycyB0byBhbGxvdyBhY2Nlc3NpbmcgdGhlIENvcmVHcmFwaGljcwor
ICAgICAgICBDR0NvbG9yU3BhY2VSZWYgYXNzb2NpYXRlZCB3aXRoIGEgQ29sb3JTcGFjZSBlbnVt
IHZhbHVlIGF0IGNvbXBpbGUgdGltZS4gVGhpcworICAgICAgICB3aWxsIGJlIHVzZWZ1bCBmb3Ig
Z2VuZXJhbGl6aW5nIHNvbWUgb2YgdGhlIGdyYWRpZW50IHJlbmRlcmluZyBjb2RlIG9wdGltaXph
dGlvbnMKKyAgICAgICAgSSBoYXZlIHBsYW5uZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpjcmVhdGVBbmRM
b3NzbGVzc2x5Q29udmVydFRvU3VwcG9ydGVkQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9y
U3BhY2VGb3JDR0NvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5oOgorICAgICAgICAoV2ViQ29yZTo6Q0dDb2xvclNwYWNlTWFwcGluZzxDb2xv
clNwYWNlOjpTUkdCPjo6Y29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbG9yU3Bh
Y2VNYXBwaW5nPENvbG9yU3BhY2U6OkE5OFJHQj46OmNvbG9yU3BhY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpEaXNwbGF5UDM+Ojpjb2xvclNw
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6
RXh0ZW5kZWRBOThSR0I+Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29sb3JT
cGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWREaXNwbGF5UDM+Ojpjb2xvclNwYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5k
ZWRSZWMyMDIwPjo6Y29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbG9yU3BhY2VN
YXBwaW5nPENvbG9yU3BhY2U6OkV4dGVuZGVkTGluZWFyU1JHQj46OmNvbG9yU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRlZFBy
b1Bob3RvUkdCPjo6Y29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbG9yU3BhY2VN
YXBwaW5nPENvbG9yU3BhY2U6OkV4dGVuZGVkU1JHQj46OmNvbG9yU3BhY2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpSZWMyMDIwPjo6Y29sb3JT
cGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6
OkxpbmVhclNSR0I+Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29sb3JTcGFj
ZU1hcHBpbmc8Q29sb3JTcGFjZTo6UHJvUGhvdG9SR0I+Ojpjb2xvclNwYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6WFlaX0Q1MD46OmNvbG9y
U3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0dDb2xvclNwYWNlTWFwcGluZ0dldHRlcjo6Y29s
b3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZSk6
CisKIDIwMjItMDEtMDggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IHNvbWUgQ1NTIGZpbHRlciBpbnRlcnBvbGF0aW9uIGlzc3VlcwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNl
Q0cuY3BwCShyZXZpc2lvbiAyODc4MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvclNwYWNlQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcg
QEAgQ0dDb2xvclNwYWNlUmVmIFJPTU1SR0JDb2xvclNwYWNlUmVmKCkKIH0KICNlbmRpZgogCi0j
aWYgSEFWRShDT1JFX0dSQVBISUNTX1hZWl9DT0xPUl9TUEFDRSkKKyNpZiBIQVZFKENPUkVfR1JB
UEhJQ1NfWFlaX0Q1MF9DT0xPUl9TUEFDRSkKIENHQ29sb3JTcGFjZVJlZiB4eXpENTBDb2xvclNw
YWNlUmVmKCkKIHsKICAgICByZXR1cm4gbmFtZWRDb2xvclNwYWNlPGtDR0NvbG9yU3BhY2VHZW5l
cmljWFlaPigpOwpAQCAtMjE2LDcgKzIxNiw3IEBAIHN0ZDo6b3B0aW9uYWw8Q29sb3JTcGFjZT4g
Y29sb3JTcGFjZUZvckNHQ29sb3JTcGFjZShDRwogICAgICAgICByZXR1cm4gQ29sb3JTcGFjZTo6
UHJvUGhvdG9SR0I7CiAjZW5kaWYKIAotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19YWVpfQ09MT1Jf
U1BBQ0UpCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX1hZWl9ENTBfQ09MT1JfU1BBQ0UpCiAgICAg
aWYgKENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKGNvbG9yU3BhY2UsIHh5ekQ1MENvbG9y
U3BhY2VSZWYoKSkpCiAgICAgICAgIHJldHVybiBDb2xvclNwYWNlOjpYWVpfRDUwOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
clNwYWNlQ0cuaAkocmV2aXNpb24gMjg3ODExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE2MCArMzQs
MTcwIEBAIFdURl9ERUNMQVJFX0NGX1RZUEVfVFJBSVQoQ0dDb2xvclNwYWNlKTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCit0ZW1wbGF0ZTxDb2xvclNwYWNlPiBzdHJ1Y3QgQ0dDb2xvclNwYWNl
TWFwcGluZzsKKwogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNSR0JDb2xvclNwYWNl
UmVmKCk7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6
OlNSR0I+IHsgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgeyByZXR1cm4gc1JH
QkNvbG9yU3BhY2VSZWYoKTsgfSB9OwogCiAjaWYgSEFWRShDT1JFX0dSQVBISUNTX0FET0JFX1JH
Ql8xOTk4X0NPTE9SX1NQQUNFKQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGFkb2Jl
UkdCMTk5OENvbG9yU3BhY2VSZWYoKTsKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1h
cHBpbmc8Q29sb3JTcGFjZTo6QTk4UkdCPiB7IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JT
cGFjZSgpIHsgcmV0dXJuIGFkb2JlUkdCMTk5OENvbG9yU3BhY2VSZWYoKTsgfSB9OworI2Vsc2UK
K3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6QTk4UkdC
PiB7IH07CiAjZW5kaWYKIAogI2lmIEhBVkUoQ09SRV9HUkFQSElDU19ESVNQTEFZX1AzX0NPTE9S
X1NQQUNFKQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGRpc3BsYXlQM0NvbG9yU3Bh
Y2VSZWYoKTsKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFj
ZTo6RGlzcGxheVAzPiB7IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIHsgcmV0
dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsgfSB9OworI2Vsc2UKK3RlbXBsYXRlPD4gc3Ry
dWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RGlzcGxheVAzPiB7IH07CiAjZW5k
aWYKIAogI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9BRE9CRV9SR0JfMTk5OF9DT0xP
Ul9TUEFDRSkKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZEFkb2JlUkdC
MTk5OENvbG9yU3BhY2VSZWYoKTsKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBp
bmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWRBOThSR0I+IHsgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlKCkgeyByZXR1cm4gZXh0ZW5kZWRBZG9iZVJHQjE5OThDb2xvclNwYWNlUmVmKCk7
IH0gfTsKKyNlbHNlCit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9y
U3BhY2U6OkV4dGVuZGVkQTk4UkdCPiB7IH07CiAjZW5kaWYKIAogI2lmIEhBVkUoQ09SRV9HUkFQ
SElDU19FWFRFTkRFRF9ESVNQTEFZX1AzX0NPTE9SX1NQQUNFKQogV0VCQ09SRV9FWFBPUlQgQ0dD
b2xvclNwYWNlUmVmIGV4dGVuZGVkRGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwordGVtcGxhdGU8
PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRlZERpc3BsYXlQ
Mz4geyBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSB7IHJldHVybiBleHRlbmRl
ZERpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsgfSB9OworI2Vsc2UKK3RlbXBsYXRlPD4gc3RydWN0
IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWREaXNwbGF5UDM+IHsgfTsK
ICNlbmRpZgogCiAjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX0lUVVJfMjAyMF9DT0xP
Ul9TUEFDRSkKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZElUVVJfMjAy
MENvbG9yU3BhY2VSZWYoKTsKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8
Q29sb3JTcGFjZTo6RXh0ZW5kZWRSZWMyMDIwPiB7IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29s
b3JTcGFjZSgpIHsgcmV0dXJuIGV4dGVuZGVkSVRVUl8yMDIwQ29sb3JTcGFjZVJlZigpOyB9IH07
CisjZWxzZQordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNl
OjpFeHRlbmRlZFJlYzIwMjA+IHsgfTsKICNlbmRpZgogCiAjaWYgSEFWRShDT1JFX0dSQVBISUNT
X0VYVEVOREVEX0xJTkVBUl9TUkdCX0NPTE9SX1NQQUNFKQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xv
clNwYWNlUmVmIGV4dGVuZGVkTGluZWFyU1JHQkNvbG9yU3BhY2VSZWYoKTsKK3RlbXBsYXRlPD4g
c3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWRMaW5lYXJTUkdC
PiB7IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIHsgcmV0dXJuIGV4dGVuZGVk
TGluZWFyU1JHQkNvbG9yU3BhY2VSZWYoKTsgfSB9OworI2Vsc2UKK3RlbXBsYXRlPD4gc3RydWN0
IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWRMaW5lYXJTUkdCPiB7IH07
CiAjZW5kaWYKIAogI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9ST01NUkdCX0NPTE9S
X1NQQUNFKQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIGV4dGVuZGVkUk9NTVJHQkNv
bG9yU3BhY2VSZWYoKTsKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29s
b3JTcGFjZTo6RXh0ZW5kZWRQcm9QaG90b1JHQj4geyBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNv
bG9yU3BhY2UoKSB7IHJldHVybiBleHRlbmRlZFJPTU1SR0JDb2xvclNwYWNlUmVmKCk7IH0gfTsK
KyNlbHNlCit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6
OkV4dGVuZGVkUHJvUGhvdG9SR0I+IHsgfTsKICNlbmRpZgogCiAjaWYgSEFWRShDT1JFX0dSQVBI
SUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3Bh
Y2VSZWYgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dD
b2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRlZFNSR0I+IHsgc3RhdGljIENHQ29s
b3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgeyByZXR1cm4gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJl
ZigpOyB9IH07CisjZWxzZQordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxD
b2xvclNwYWNlOjpFeHRlbmRlZFNSR0I+IHsgfTsKICNlbmRpZgogCiAjaWYgSEFWRShDT1JFX0dS
QVBISUNTX0lUVVJfMjAyMF9DT0xPUl9TUEFDRSkKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFj
ZVJlZiBJVFVSXzIwMjBDb2xvclNwYWNlUmVmKCk7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9y
U3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OlJlYzIwMjA+IHsgc3RhdGljIENHQ29sb3JTcGFjZVJl
ZiBjb2xvclNwYWNlKCkgeyByZXR1cm4gSVRVUl8yMDIwQ29sb3JTcGFjZVJlZigpOyB9IH07Cisj
ZWxzZQordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpS
ZWMyMDIwPiB7IH07CiAjZW5kaWYKIAogI2lmIEhBVkUoQ09SRV9HUkFQSElDU19MSU5FQVJfU1JH
Ql9DT0xPUl9TUEFDRSkKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBsaW5lYXJTUkdC
Q29sb3JTcGFjZVJlZigpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxD
b2xvclNwYWNlOjpMaW5lYXJTUkdCPiB7IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFj
ZSgpIHsgcmV0dXJuIGxpbmVhclNSR0JDb2xvclNwYWNlUmVmKCk7IH0gfTsKKyNlbHNlCit0ZW1w
bGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkxpbmVhclNSR0I+
IHsgfTsKICNlbmRpZgogCiAjaWYgSEFWRShDT1JFX0dSQVBISUNTX1JPTU1SR0JfQ09MT1JfU1BB
Q0UpCiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgUk9NTVJHQkNvbG9yU3BhY2VSZWYo
KTsKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6UHJv
UGhvdG9SR0I+IHsgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgeyByZXR1cm4g
Uk9NTVJHQkNvbG9yU3BhY2VSZWYoKTsgfSB9OworI2Vsc2UKK3RlbXBsYXRlPD4gc3RydWN0IENH
Q29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6UHJvUGhvdG9SR0I+IHsgfTsKICNlbmRpZgog
Ci0jaWYgSEFWRShDT1JFX0dSQVBISUNTX1hZWl9DT0xPUl9TUEFDRSkKKyNpZiBIQVZFKENPUkVf
R1JBUEhJQ1NfWFlaX0Q1MF9DT0xPUl9TUEFDRSkKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFj
ZVJlZiB4eXpENTBDb2xvclNwYWNlUmVmKCk7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3Bh
Y2VNYXBwaW5nPENvbG9yU3BhY2U6OlhZWl9ENTA+IHsgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlKCkgeyByZXR1cm4geHl6RDUwQ29sb3JTcGFjZVJlZigpOyB9IH07CisjZWxzZQor
dGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpYWVpfRDUw
PiB7IH07CiAjZW5kaWYKIAorLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB0aGVzZSBvbmNlL2lm
IENvcmVHcmFwaGljcyBhZGRzIHN1cHBvcnQgZm9yIHRoZW0uCit0ZW1wbGF0ZTw+IHN0cnVjdCBD
R0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkhTTD4geyB9OwordGVtcGxhdGU8PiBzdHJ1
Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpIV0I+IHsgfTsKK3RlbXBsYXRlPD4g
c3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6TENIPiB7IH07Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkxhYj4geyB9OwordGVt
cGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpPS0xhYj4geyB9
OwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpPS0xD
SD4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNl
OjpYWVpfRDY1PiB7IH07CisKKwogc3RkOjpvcHRpb25hbDxDb2xvclNwYWNlPiBjb2xvclNwYWNl
Rm9yQ0dDb2xvclNwYWNlKENHQ29sb3JTcGFjZVJlZik7CiAKKwordGVtcGxhdGU8Q29sb3JTcGFj
ZSwgdHlwZW5hbWUgPSB2b2lkPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzQ0dDb2xvclNwYWNl
TWFwcGluZyA9IGZhbHNlOwordGVtcGxhdGU8Q29sb3JTcGFjZSBzcGFjZT4gaW5saW5lIGNvbnN0
ZXhwciBib29sIEhhc0NHQ29sb3JTcGFjZU1hcHBpbmc8c3BhY2UsIHN0ZDo6dm9pZF90PGRlY2x0
eXBlKENHQ29sb3JTcGFjZU1hcHBpbmc8c3BhY2U+Ojpjb2xvclNwYWNlKCkpPj4gPSB0cnVlOwor
c3RhdGljX2Fzc2VydChIYXNDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OlNSR0I+LCAi
QW4gU1JHQiBjb2xvciBzcGFjZSBtYXBwaW5nIG11c3QgYmUgc3VwcG9ydGVkIG9uIGFsbCBwbGF0
Zm9ybXMuIik7CisKK3RlbXBsYXRlPENvbG9yU3BhY2Ugc3BhY2UsIGJvb2wgPSBIYXNDR0NvbG9y
U3BhY2VNYXBwaW5nPHNwYWNlPj4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmdPck51bGxHZXR0
ZXIgeyBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSB7IHJldHVybiBudWxscHRy
OyB9IH07Cit0ZW1wbGF0ZTxDb2xvclNwYWNlIHNwYWNlPiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFw
cGluZ09yTnVsbEdldHRlcjxzcGFjZSwgdHJ1ZT4geyBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNv
bG9yU3BhY2UoKSB7IHJldHVybiBDR0NvbG9yU3BhY2VNYXBwaW5nPHNwYWNlPjo6Y29sb3JTcGFj
ZSgpOyB9IH07CisKK3RlbXBsYXRlPENvbG9yU3BhY2Ugc3BhY2U+IENHQ29sb3JTcGFjZVJlZiBj
YWNoZWRDR0NvbG9yU3BhY2UoKQoreworICAgIHJldHVybiBDR0NvbG9yU3BhY2VNYXBwaW5nPHNw
YWNlPjo6Y29sb3JTcGFjZSgpOworfQorCit0ZW1wbGF0ZTxDb2xvclNwYWNlIHNwYWNlPiBDR0Nv
bG9yU3BhY2VSZWYgY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2UoKQoreworICAgIHJldHVybiBD
R0NvbG9yU3BhY2VNYXBwaW5nT3JOdWxsR2V0dGVyPHNwYWNlPjo6Y29sb3JTcGFjZSgpOworfQor
CiBzdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFj
ZShDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7Ci0g
ICAgY2FzZSBDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VS
ZWYoKTsKLQogICAgIGNhc2UgQ29sb3JTcGFjZTo6QTk4UkdCOgotI2lmIEhBVkUoQ09SRV9HUkFQ
SElDU19BRE9CRV9SR0JfMTk5OF9DT0xPUl9TUEFDRSkKLSAgICAgICAgcmV0dXJuIGFkb2JlUkdC
MTk5OENvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBudWxscHRyOwotI2Vu
ZGlmCi0KKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9yU3Bh
Y2U6OkE5OFJHQj4oKTsKICAgICBjYXNlIENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSNpZiBIQVZF
KENPUkVfR1JBUEhJQ1NfRElTUExBWV9QM19DT0xPUl9TUEFDRSkKLSAgICAgICAgcmV0dXJuIGRp
c3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
I2VuZGlmCi0KKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9y
U3BhY2U6OkRpc3BsYXlQMz4oKTsKICAgICBjYXNlIENvbG9yU3BhY2U6OkV4dGVuZGVkQTk4UkdC
OgotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9BRE9CRV9SR0JfMTk5OF9DT0xPUl9T
UEFDRSkKLSAgICAgICAgcmV0dXJuIGV4dGVuZGVkQWRvYmVSR0IxOTk4Q29sb3JTcGFjZVJlZigp
OwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLQorICAgICAgICByZXR1
cm4gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8Q29sb3JTcGFjZTo6RXh0ZW5kZWRBOThSR0I+
KCk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpFeHRlbmRlZERpc3BsYXlQMzoKLSNpZiBIQVZFKENP
UkVfR1JBUEhJQ1NfRVhURU5ERURfRElTUExBWV9QM19DT0xPUl9TUEFDRSkKLSAgICAgICAgcmV0
dXJuIGV4dGVuZGVkRGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0jZW5kaWYKLQorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFibGVDR0Nv
bG9yU3BhY2U8Q29sb3JTcGFjZTo6RXh0ZW5kZWREaXNwbGF5UDM+KCk7CiAgICAgY2FzZSBDb2xv
clNwYWNlOjpFeHRlbmRlZExpbmVhclNSR0I6Ci0jaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVO
REVEX0xJTkVBUl9TUkdCX0NPTE9SX1NQQUNFKQotICAgICAgICByZXR1cm4gZXh0ZW5kZWRMaW5l
YXJTUkdCQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0j
ZW5kaWYKLQorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8Q29sb3JT
cGFjZTo6RXh0ZW5kZWRMaW5lYXJTUkdCPigpOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6RXh0ZW5k
ZWRQcm9QaG90b1JHQjoKLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfUk9NTVJHQl9D
T0xPUl9TUEFDRSkKLSAgICAgICAgcmV0dXJuIGV4dGVuZGVkUk9NTVJHQkNvbG9yU3BhY2VSZWYo
KTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBudWxscHRyOwotI2VuZGlmCi0KKyAgICAgICAgcmV0
dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6OkV4dGVuZGVkUHJvUGhv
dG9SR0I+KCk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpFeHRlbmRlZFJlYzIwMjA6Ci0jaWYgSEFW
RShDT1JFX0dSQVBISUNTX0VYVEVOREVEX0lUVVJfMjAyMF9DT0xPUl9TUEFDRSkKLSAgICAgICAg
cmV0dXJuIGV4dGVuZGVkSVRVUl8yMDIwQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLQorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFibGVD
R0NvbG9yU3BhY2U8Q29sb3JTcGFjZTo6RXh0ZW5kZWRSZWMyMDIwPigpOwogICAgIGNhc2UgQ29s
b3JTcGFjZTo6RXh0ZW5kZWRTUkdCOgotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9T
UkdCX0NPTE9SX1NQQUNFKQotICAgICAgICByZXR1cm4gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJl
ZigpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLQotICAgIGNhc2Ug
Q29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfTElORUFSX1NS
R0JfQ09MT1JfU1BBQ0UpCi0gICAgICAgIHJldHVybiBsaW5lYXJTUkdCQ29sb3JTcGFjZVJlZigp
OwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLQotICAgIGNhc2UgQ29s
b3JTcGFjZTo6UHJvUGhvdG9SR0I6Ci0jaWYgSEFWRShDT1JFX0dSQVBISUNTX1JPTU1SR0JfQ09M
T1JfU1BBQ0UpCi0gICAgICAgIHJldHVybiBST01NUkdCQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLQotICAgIGNhc2UgQ29sb3JTcGFjZTo6
UmVjMjAyMDoKLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfSVRVUl8yMDIwX0NPTE9SX1NQQUNFKQot
ICAgICAgICByZXR1cm4gSVRVUl8yMDIwQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLQotICAgIGNhc2UgQ29sb3JTcGFjZTo6WFlaX0Q1MDoK
LSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfWFlaX0NPTE9SX1NQQUNFKQotICAgICAgICByZXR1cm4g
eHl6RDUwQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0j
ZW5kaWYKLQotICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdGhlc2Ugb25jZS9pZiBDb3Jl
R3JhcGhpY3MgYWRkcyBzdXBwb3J0IGZvciBpdC4KKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxh
YmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6OkV4dGVuZGVkU1JHQj4oKTsKICAgICBjYXNlIENv
bG9yU3BhY2U6OkhTTDoKKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNl
PENvbG9yU3BhY2U6OkhTTD4oKTsKICAgICBjYXNlIENvbG9yU3BhY2U6OkhXQjoKKyAgICAgICAg
cmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6OkhXQj4oKTsKICAg
ICBjYXNlIENvbG9yU3BhY2U6OkxDSDoKKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dD
b2xvclNwYWNlPENvbG9yU3BhY2U6OkxDSD4oKTsKICAgICBjYXNlIENvbG9yU3BhY2U6OkxhYjoK
KyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6Okxh
Yj4oKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OkxpbmVhclNSR0I6CisgICAgICAgIHJldHVybiBj
YWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNlOjpMaW5lYXJTUkdCPigpOwogICAg
IGNhc2UgQ29sb3JTcGFjZTo6T0tMQ0g6CisgICAgICAgIHJldHVybiBjYWNoZWROdWxsYWJsZUNH
Q29sb3JTcGFjZTxDb2xvclNwYWNlOjpPS0xDSD4oKTsKICAgICBjYXNlIENvbG9yU3BhY2U6Ok9L
TGFiOgorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8Q29sb3JTcGFj
ZTo6T0tMYWI+KCk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpQcm9QaG90b1JHQjoKKyAgICAgICAg
cmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6OlByb1Bob3RvUkdC
PigpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6UmVjMjAyMDoKKyAgICAgICAgcmV0dXJuIGNhY2hl
ZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6OlJlYzIwMjA+KCk7CisgICAgY2FzZSBD
b2xvclNwYWNlOjpTUkdCOgorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3Bh
Y2U8Q29sb3JTcGFjZTo6U1JHQj4oKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlhZWl9ENTA6Cisg
ICAgICAgIHJldHVybiBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNlOjpYWVpf
RDUwPigpOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6WFlaX0Q2NToKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLQorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8Q29s
b3JTcGFjZTo6WFlaX0Q2NT4oKTsKICAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
</data>
<flag name="commit-queue"
          id="474639"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448707</attachid>
            <date>2022-01-09 09:33:10 -0800</date>
            <delta_ts>2022-01-09 10:54:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>cgColorSpace.diff</filename>
            <type>text/plain</type>
            <size>15095</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODc4MTIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAxLTA4ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaGVscGVycyB0byBhY2Nlc3MgQ29yZUdyYXBoaWNz
IGNvbG9yIHNwYWNlcyBtb3JlIGVhc2lseSBpbiBnZW5lcmljIGNvbnRleHRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDQKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoK
KyAgICAgICAgVXBkYXRlIGhhdmUgbWFjcm8sIEhBVkVfQ09SRV9HUkFQSElDU19YWVpfQ09MT1Jf
U1BBQ0UsIHRvIGhhdmUgYSBtb3JlIHNwZWNpZmljIG5hbWUsCisgICAgICAgIEhBVkVfQ09SRV9H
UkFQSElDU19YWVpfRDUwX0NPTE9SX1NQQUNFLCB3aGljaCBpcyByZWFsbHkgd2hhdCBpdCBpcy4K
KwogMjAyMi0wMS0wNyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZG9wdCBsaW5rZWRPbk9yQWZ0ZXIoKSBpbiBtb3JlIHBsYWNlcwpJbmRleDogU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjg3ODE1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjItMDEtMDggIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBoZWxwZXJzIHRvIGFjY2VzcyBDb3JlR3JhcGhp
Y3MgY29sb3Igc3BhY2VzIG1vcmUgZWFzaWx5IGluIGdlbmVyaWMgY29udGV4dHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAwNAorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZCBzb21lIHN0cnVjdHMgYW5k
IHR5cGUgdHJhaXQgaGVscGVycyB0byBhbGxvdyBhY2Nlc3NpbmcgdGhlIENvcmVHcmFwaGljcwor
ICAgICAgICBDR0NvbG9yU3BhY2VSZWYgYXNzb2NpYXRlZCB3aXRoIGEgQ29sb3JTcGFjZSBlbnVt
IHZhbHVlIGF0IGNvbXBpbGUgdGltZS4gVGhpcworICAgICAgICB3aWxsIGJlIHVzZWZ1bCBmb3Ig
Z2VuZXJhbGl6aW5nIHNvbWUgb2YgdGhlIGdyYWRpZW50IHJlbmRlcmluZyBjb2RlIG9wdGltaXph
dGlvbnMKKyAgICAgICAgSSBoYXZlIHBsYW5uZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpjcmVhdGVBbmRM
b3NzbGVzc2x5Q29udmVydFRvU3VwcG9ydGVkQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9y
U3BhY2VGb3JDR0NvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5oOgorICAgICAgICAoV2ViQ29yZTo6Q0dDb2xvclNwYWNlTWFwcGluZzxDb2xv
clNwYWNlOjpTUkdCPjo6Y29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbG9yU3Bh
Y2VNYXBwaW5nPENvbG9yU3BhY2U6OkE5OFJHQj46OmNvbG9yU3BhY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpEaXNwbGF5UDM+Ojpjb2xvclNw
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6
RXh0ZW5kZWRBOThSR0I+Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29sb3JT
cGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWREaXNwbGF5UDM+Ojpjb2xvclNwYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5k
ZWRSZWMyMDIwPjo6Y29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbG9yU3BhY2VN
YXBwaW5nPENvbG9yU3BhY2U6OkV4dGVuZGVkTGluZWFyU1JHQj46OmNvbG9yU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRlZFBy
b1Bob3RvUkdCPjo6Y29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbG9yU3BhY2VN
YXBwaW5nPENvbG9yU3BhY2U6OkV4dGVuZGVkU1JHQj46OmNvbG9yU3BhY2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpSZWMyMDIwPjo6Y29sb3JT
cGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6
OkxpbmVhclNSR0I+Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNHQ29sb3JTcGFj
ZU1hcHBpbmc8Q29sb3JTcGFjZTo6UHJvUGhvdG9SR0I+Ojpjb2xvclNwYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6WFlaX0Q1MD46OmNvbG9y
U3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0dDb2xvclNwYWNlTWFwcGluZ0dldHRlcjo6Y29s
b3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZSk6
CisKIDIwMjItMDEtMDggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IHNvbWUgQ1NTIGZpbHRlciBpbnRlcnBvbGF0aW9uIGlzc3VlcwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHJl
dmlzaW9uIDI4NzgxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIHN0ZDo6b3B0aW9uYWw8
U1JHQkE8dWludDhfdD4+IHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zcwogQ29sb3IgQ29sb3I6OmNy
ZWF0ZUFuZExvc3NsZXNzbHlDb252ZXJ0VG9TdXBwb3J0ZWRDb2xvclNwYWNlKENHQ29sb3JSZWYg
Y29sb3IsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpCiB7CiAgICAgYXV0byBzb3VyY2VDR0NvbG9y
U3BhY2UgPSBDR0NvbG9yR2V0Q29sb3JTcGFjZShjb2xvcik7Ci0jaWYgSEFWRShDT1JFX0dSQVBI
SUNTX1hZWl9DT0xPUl9TUEFDRSkKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfWFlaX0Q1MF9DT0xP
Ul9TUEFDRSkKICAgICBhdXRvIGRlc3RpbmF0aW9uQ0dDb2xvclNwYWNlID0geHl6RDUwQ29sb3JT
cGFjZVJlZigpOwogICAgIGF1dG8gZGVzdGluYXRpb25Db2xvclNwYWNlID0gQ29sb3JTcGFjZTo6
WFlaX0Q1MDsKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9Db2xvclNwYWNlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJKHJldmlzaW9uIDI4NzgxMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCBDR0NvbG9yU3BhY2VSZWYgUk9NTVJHQkNvbG9yU3Bh
Y2VSZWYoKQogfQogI2VuZGlmCiAKLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfWFlaX0NPTE9SX1NQ
QUNFKQorI2lmIEhBVkUoQ09SRV9HUkFQSElDU19YWVpfRDUwX0NPTE9SX1NQQUNFKQogQ0dDb2xv
clNwYWNlUmVmIHh5ekQ1MENvbG9yU3BhY2VSZWYoKQogewogICAgIHJldHVybiBuYW1lZENvbG9y
U3BhY2U8a0NHQ29sb3JTcGFjZUdlbmVyaWNYWVo+KCk7CkBAIC0yMTYsNyArMjE2LDcgQEAgc3Rk
OjpvcHRpb25hbDxDb2xvclNwYWNlPiBjb2xvclNwYWNlRm9yQ0dDb2xvclNwYWNlKENHCiAgICAg
ICAgIHJldHVybiBDb2xvclNwYWNlOjpQcm9QaG90b1JHQjsKICNlbmRpZgogCi0jaWYgSEFWRShD
T1JFX0dSQVBISUNTX1hZWl9DT0xPUl9TUEFDRSkKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfWFla
X0Q1MF9DT0xPUl9TUEFDRSkKICAgICBpZiAoQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2Uo
Y29sb3JTcGFjZSwgeHl6RDUwQ29sb3JTcGFjZVJlZigpKSkKICAgICAgICAgcmV0dXJuIENvbG9y
U3BhY2U6OlhZWl9ENTA7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCShyZXZpc2lvbiAyODc4MTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsMTYwICszNCwxNzAgQEAgV1RGX0RFQ0xBUkVfQ0ZfVFlQRV9UUkFJVChD
R0NvbG9yU3BhY2UpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPENvbG9yU3Bh
Y2U+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nOworCiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9y
U3BhY2VSZWYgc1JHQkNvbG9yU3BhY2VSZWYoKTsKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JT
cGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6U1JHQj4geyBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNv
bG9yU3BhY2UoKSB7IHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOyB9IH07CiAKICNpZiBIQVZF
KENPUkVfR1JBUEhJQ1NfQURPQkVfUkdCXzE5OThfQ09MT1JfU1BBQ0UpCiBXRUJDT1JFX0VYUE9S
VCBDR0NvbG9yU3BhY2VSZWYgYWRvYmVSR0IxOTk4Q29sb3JTcGFjZVJlZigpOwordGVtcGxhdGU8
PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpBOThSR0I+IHsgc3RhdGlj
IENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgeyByZXR1cm4gYWRvYmVSR0IxOTk4Q29sb3JT
cGFjZVJlZigpOyB9IH07CisjZWxzZQordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFw
cGluZzxDb2xvclNwYWNlOjpBOThSR0I+IHsgfTsKICNlbmRpZgogCiAjaWYgSEFWRShDT1JFX0dS
QVBISUNTX0RJU1BMQVlfUDNfQ09MT1JfU1BBQ0UpCiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3Bh
Y2VSZWYgZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xv
clNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpEaXNwbGF5UDM+IHsgc3RhdGljIENHQ29sb3JTcGFj
ZVJlZiBjb2xvclNwYWNlKCkgeyByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOyB9IH07
CisjZWxzZQordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNl
OjpEaXNwbGF5UDM+IHsgfTsKICNlbmRpZgogCiAjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVO
REVEX0FET0JFX1JHQl8xOTk4X0NPTE9SX1NQQUNFKQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNw
YWNlUmVmIGV4dGVuZGVkQWRvYmVSR0IxOTk4Q29sb3JTcGFjZVJlZigpOwordGVtcGxhdGU8PiBz
dHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRlZEE5OFJHQj4geyBz
dGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSB7IHJldHVybiBleHRlbmRlZEFkb2Jl
UkdCMTk5OENvbG9yU3BhY2VSZWYoKTsgfSB9OworI2Vsc2UKK3RlbXBsYXRlPD4gc3RydWN0IENH
Q29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWRBOThSR0I+IHsgfTsKICNlbmRp
ZgogCiAjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX0RJU1BMQVlfUDNfQ09MT1JfU1BB
Q0UpCiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWREaXNwbGF5UDNDb2xv
clNwYWNlUmVmKCk7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9y
U3BhY2U6OkV4dGVuZGVkRGlzcGxheVAzPiB7IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JT
cGFjZSgpIHsgcmV0dXJuIGV4dGVuZGVkRGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOyB9IH07Cisj
ZWxzZQordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpF
eHRlbmRlZERpc3BsYXlQMz4geyB9OwogI2VuZGlmCiAKICNpZiBIQVZFKENPUkVfR1JBUEhJQ1Nf
RVhURU5ERURfSVRVUl8yMDIwX0NPTE9SX1NQQUNFKQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNw
YWNlUmVmIGV4dGVuZGVkSVRVUl8yMDIwQ29sb3JTcGFjZVJlZigpOwordGVtcGxhdGU8PiBzdHJ1
Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRlZFJlYzIwMjA+IHsgc3Rh
dGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgeyByZXR1cm4gZXh0ZW5kZWRJVFVSXzIw
MjBDb2xvclNwYWNlUmVmKCk7IH0gfTsKKyNlbHNlCit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9y
U3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkV4dGVuZGVkUmVjMjAyMD4geyB9OwogI2VuZGlmCiAK
ICNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfTElORUFSX1NSR0JfQ09MT1JfU1BBQ0Up
CiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3BhY2VSZWYgZXh0ZW5kZWRMaW5lYXJTUkdCQ29sb3JT
cGFjZVJlZigpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNw
YWNlOjpFeHRlbmRlZExpbmVhclNSR0I+IHsgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNw
YWNlKCkgeyByZXR1cm4gZXh0ZW5kZWRMaW5lYXJTUkdCQ29sb3JTcGFjZVJlZigpOyB9IH07Cisj
ZWxzZQordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpF
eHRlbmRlZExpbmVhclNSR0I+IHsgfTsKICNlbmRpZgogCiAjaWYgSEFWRShDT1JFX0dSQVBISUNT
X0VYVEVOREVEX1JPTU1SR0JfQ09MT1JfU1BBQ0UpCiBXRUJDT1JFX0VYUE9SVCBDR0NvbG9yU3Bh
Y2VSZWYgZXh0ZW5kZWRST01NUkdCQ29sb3JTcGFjZVJlZigpOwordGVtcGxhdGU8PiBzdHJ1Y3Qg
Q0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpFeHRlbmRlZFByb1Bob3RvUkdCPiB7IHN0
YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIHsgcmV0dXJuIGV4dGVuZGVkUk9NTVJH
QkNvbG9yU3BhY2VSZWYoKTsgfSB9OworI2Vsc2UKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JT
cGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6RXh0ZW5kZWRQcm9QaG90b1JHQj4geyB9OwogI2VuZGlm
CiAKICNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkKIFdF
QkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkV4dGVu
ZGVkU1JHQj4geyBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSB7IHJldHVybiBl
eHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7IH0gfTsKKyNlbHNlCit0ZW1wbGF0ZTw+IHN0cnVj
dCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkV4dGVuZGVkU1JHQj4geyB9OwogI2Vu
ZGlmCiAKICNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfSVRVUl8yMDIwX0NPTE9SX1NQQUNFKQogV0VC
Q09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIElUVVJfMjAyMENvbG9yU3BhY2VSZWYoKTsKK3Rl
bXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6UmVjMjAyMD4g
eyBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSB7IHJldHVybiBJVFVSXzIwMjBD
b2xvclNwYWNlUmVmKCk7IH0gfTsKKyNlbHNlCit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3Bh
Y2VNYXBwaW5nPENvbG9yU3BhY2U6OlJlYzIwMjA+IHsgfTsKICNlbmRpZgogCiAjaWYgSEFWRShD
T1JFX0dSQVBISUNTX0xJTkVBUl9TUkdCX0NPTE9SX1NQQUNFKQogV0VCQ09SRV9FWFBPUlQgQ0dD
b2xvclNwYWNlUmVmIGxpbmVhclNSR0JDb2xvclNwYWNlUmVmKCk7Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OkxpbmVhclNSR0I+IHsgc3RhdGljIENH
Q29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgeyByZXR1cm4gbGluZWFyU1JHQkNvbG9yU3BhY2VS
ZWYoKTsgfSB9OworI2Vsc2UKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8
Q29sb3JTcGFjZTo6TGluZWFyU1JHQj4geyB9OwogI2VuZGlmCiAKICNpZiBIQVZFKENPUkVfR1JB
UEhJQ1NfUk9NTVJHQl9DT0xPUl9TUEFDRSkKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJl
ZiBST01NUkdCQ29sb3JTcGFjZVJlZigpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNl
TWFwcGluZzxDb2xvclNwYWNlOjpQcm9QaG90b1JHQj4geyBzdGF0aWMgQ0dDb2xvclNwYWNlUmVm
IGNvbG9yU3BhY2UoKSB7IHJldHVybiBST01NUkdCQ29sb3JTcGFjZVJlZigpOyB9IH07CisjZWxz
ZQordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNwYWNlOjpQcm9Q
aG90b1JHQj4geyB9OwogI2VuZGlmCiAKLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfWFlaX0NPTE9S
X1NQQUNFKQorI2lmIEhBVkUoQ09SRV9HUkFQSElDU19YWVpfRDUwX0NPTE9SX1NQQUNFKQogV0VC
Q09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHh5ekQ1MENvbG9yU3BhY2VSZWYoKTsKK3RlbXBs
YXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6WFlaX0Q1MD4geyBz
dGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSB7IHJldHVybiB4eXpENTBDb2xvclNw
YWNlUmVmKCk7IH0gfTsKKyNlbHNlCit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBw
aW5nPENvbG9yU3BhY2U6OlhZWl9ENTA+IHsgfTsKICNlbmRpZgogCisvLyBGSVhNRTogQWRkIHN1
cHBvcnQgZm9yIHRoZXNlIG9uY2UvaWYgQ29yZUdyYXBoaWNzIGFkZHMgc3VwcG9ydCBmb3IgdGhl
bS4KK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29sb3JTcGFjZTo6SFNM
PiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6
OkhXQj4geyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgQ0dDb2xvclNwYWNlTWFwcGluZzxDb2xvclNw
YWNlOjpMQ0g+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IENHQ29sb3JTcGFjZU1hcHBpbmc8Q29s
b3JTcGFjZTo6TGFiPiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5n
PENvbG9yU3BhY2U6Ok9LTGFiPiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9yU3BhY2VN
YXBwaW5nPENvbG9yU3BhY2U6Ok9LTENIPiB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDR0NvbG9y
U3BhY2VNYXBwaW5nPENvbG9yU3BhY2U6OlhZWl9ENjU+IHsgfTsKKworCiBzdGQ6Om9wdGlvbmFs
PENvbG9yU3BhY2U+IGNvbG9yU3BhY2VGb3JDR0NvbG9yU3BhY2UoQ0dDb2xvclNwYWNlUmVmKTsK
IAorCit0ZW1wbGF0ZTxDb2xvclNwYWNlLCB0eXBlbmFtZSA9IHZvaWQ+IGlubGluZSBjb25zdGV4
cHIgYm9vbCBIYXNDR0NvbG9yU3BhY2VNYXBwaW5nID0gZmFsc2U7Cit0ZW1wbGF0ZTxDb2xvclNw
YWNlIHNwYWNlPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzQ0dDb2xvclNwYWNlTWFwcGluZzxz
cGFjZSwgc3RkOjp2b2lkX3Q8ZGVjbHR5cGUoQ0dDb2xvclNwYWNlTWFwcGluZzxzcGFjZT46OmNv
bG9yU3BhY2UoKSk+PiA9IHRydWU7CitzdGF0aWNfYXNzZXJ0KEhhc0NHQ29sb3JTcGFjZU1hcHBp
bmc8Q29sb3JTcGFjZTo6U1JHQj4sICJBbiBTUkdCIGNvbG9yIHNwYWNlIG1hcHBpbmcgbXVzdCBi
ZSBzdXBwb3J0ZWQgb24gYWxsIHBsYXRmb3Jtcy4iKTsKKwordGVtcGxhdGU8Q29sb3JTcGFjZSBz
cGFjZSwgYm9vbCA9IEhhc0NHQ29sb3JTcGFjZU1hcHBpbmc8c3BhY2U+PiBzdHJ1Y3QgQ0dDb2xv
clNwYWNlTWFwcGluZ09yTnVsbEdldHRlciB7IHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JT
cGFjZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0gfTsKK3RlbXBsYXRlPENvbG9yU3BhY2Ugc3BhY2U+
IHN0cnVjdCBDR0NvbG9yU3BhY2VNYXBwaW5nT3JOdWxsR2V0dGVyPHNwYWNlLCB0cnVlPiB7IHN0
YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIHsgcmV0dXJuIENHQ29sb3JTcGFjZU1h
cHBpbmc8c3BhY2U+Ojpjb2xvclNwYWNlKCk7IH0gfTsKKwordGVtcGxhdGU8Q29sb3JTcGFjZSBz
cGFjZT4gQ0dDb2xvclNwYWNlUmVmIGNhY2hlZENHQ29sb3JTcGFjZSgpCit7CisgICAgcmV0dXJu
IENHQ29sb3JTcGFjZU1hcHBpbmc8c3BhY2U+Ojpjb2xvclNwYWNlKCk7Cit9CisKK3RlbXBsYXRl
PENvbG9yU3BhY2Ugc3BhY2U+IENHQ29sb3JTcGFjZVJlZiBjYWNoZWROdWxsYWJsZUNHQ29sb3JT
cGFjZSgpCit7CisgICAgcmV0dXJuIENHQ29sb3JTcGFjZU1hcHBpbmdPck51bGxHZXR0ZXI8c3Bh
Y2U+Ojpjb2xvclNwYWNlKCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNh
Y2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBz
d2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAg
IHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwotCiAgICAgY2FzZSBDb2xvclNwYWNlOjpBOThS
R0I6Ci0jaWYgSEFWRShDT1JFX0dSQVBISUNTX0FET0JFX1JHQl8xOTk4X0NPTE9SX1NQQUNFKQot
ICAgICAgICByZXR1cm4gYWRvYmVSR0IxOTk4Q29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLQorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFi
bGVDR0NvbG9yU3BhY2U8Q29sb3JTcGFjZTo6QTk4UkdCPigpOwogICAgIGNhc2UgQ29sb3JTcGFj
ZTo6RGlzcGxheVAzOgotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19ESVNQTEFZX1AzX0NPTE9SX1NQ
QUNFKQotICAgICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYKLQorICAgICAgICByZXR1cm4gY2FjaGVkTnVs
bGFibGVDR0NvbG9yU3BhY2U8Q29sb3JTcGFjZTo6RGlzcGxheVAzPigpOwogICAgIGNhc2UgQ29s
b3JTcGFjZTo6RXh0ZW5kZWRBOThSR0I6Ci0jaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVE
X0FET0JFX1JHQl8xOTk4X0NPTE9SX1NQQUNFKQotICAgICAgICByZXR1cm4gZXh0ZW5kZWRBZG9i
ZVJHQjE5OThDb2xvclNwYWNlUmVmKCk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSNlbmRpZgotCisgICAgICAgIHJldHVybiBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZTxDb2xv
clNwYWNlOjpFeHRlbmRlZEE5OFJHQj4oKTsKICAgICBjYXNlIENvbG9yU3BhY2U6OkV4dGVuZGVk
RGlzcGxheVAzOgotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9ESVNQTEFZX1AzX0NP
TE9SX1NQQUNFKQotICAgICAgICByZXR1cm4gZXh0ZW5kZWREaXNwbGF5UDNDb2xvclNwYWNlUmVm
KCk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotCisgICAgICAgIHJl
dHVybiBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNlOjpFeHRlbmRlZERpc3Bs
YXlQMz4oKTsKICAgICBjYXNlIENvbG9yU3BhY2U6OkV4dGVuZGVkTGluZWFyU1JHQjoKLSNpZiBI
QVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfTElORUFSX1NSR0JfQ09MT1JfU1BBQ0UpCi0gICAg
ICAgIHJldHVybiBleHRlbmRlZExpbmVhclNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZWxzZQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotCisgICAgICAgIHJldHVybiBjYWNoZWROdWxs
YWJsZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNlOjpFeHRlbmRlZExpbmVhclNSR0I+KCk7CiAgICAg
Y2FzZSBDb2xvclNwYWNlOjpFeHRlbmRlZFByb1Bob3RvUkdCOgotI2lmIEhBVkUoQ09SRV9HUkFQ
SElDU19FWFRFTkRFRF9ST01NUkdCX0NPTE9SX1NQQUNFKQotICAgICAgICByZXR1cm4gZXh0ZW5k
ZWRST01NUkdCQ29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0jZW5kaWYKLQorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8Q29s
b3JTcGFjZTo6RXh0ZW5kZWRQcm9QaG90b1JHQj4oKTsKICAgICBjYXNlIENvbG9yU3BhY2U6OkV4
dGVuZGVkUmVjMjAyMDoKLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfSVRVUl8yMDIw
X0NPTE9SX1NQQUNFKQotICAgICAgICByZXR1cm4gZXh0ZW5kZWRJVFVSXzIwMjBDb2xvclNwYWNl
UmVmKCk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotCisgICAgICAg
IHJldHVybiBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNlOjpFeHRlbmRlZFJl
YzIwMjA+KCk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpFeHRlbmRlZFNSR0I6Ci0jaWYgSEFWRShD
T1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCi0gICAgICAgIHJldHVybiBl
eHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSNlbmRpZgotCi0gICAgY2FzZSBDb2xvclNwYWNlOjpMaW5lYXJTUkdCOgotI2lmIEhBVkUo
Q09SRV9HUkFQSElDU19MSU5FQVJfU1JHQl9DT0xPUl9TUEFDRSkKLSAgICAgICAgcmV0dXJuIGxp
bmVhclNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSNlbmRpZgotCi0gICAgY2FzZSBDb2xvclNwYWNlOjpQcm9QaG90b1JHQjoKLSNpZiBIQVZFKENP
UkVfR1JBUEhJQ1NfUk9NTVJHQl9DT0xPUl9TUEFDRSkKLSAgICAgICAgcmV0dXJuIFJPTU1SR0JD
b2xvclNwYWNlUmVmKCk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgot
Ci0gICAgY2FzZSBDb2xvclNwYWNlOjpSZWMyMDIwOgotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19J
VFVSXzIwMjBfQ09MT1JfU1BBQ0UpCi0gICAgICAgIHJldHVybiBJVFVSXzIwMjBDb2xvclNwYWNl
UmVmKCk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotCi0gICAgY2Fz
ZSBDb2xvclNwYWNlOjpYWVpfRDUwOgotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19YWVpfQ09MT1Jf
U1BBQ0UpCi0gICAgICAgIHJldHVybiB4eXpENTBDb2xvclNwYWNlUmVmKCk7Ci0jZWxzZQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZgotCi0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0
IGZvciB0aGVzZSBvbmNlL2lmIENvcmVHcmFwaGljcyBhZGRzIHN1cHBvcnQgZm9yIGl0LgorICAg
ICAgICByZXR1cm4gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8Q29sb3JTcGFjZTo6RXh0ZW5k
ZWRTUkdCPigpOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6SFNMOgorICAgICAgICByZXR1cm4gY2Fj
aGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8Q29sb3JTcGFjZTo6SFNMPigpOwogICAgIGNhc2UgQ29s
b3JTcGFjZTo6SFdCOgorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8
Q29sb3JTcGFjZTo6SFdCPigpOwogICAgIGNhc2UgQ29sb3JTcGFjZTo6TENIOgorICAgICAgICBy
ZXR1cm4gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8Q29sb3JTcGFjZTo6TENIPigpOwogICAg
IGNhc2UgQ29sb3JTcGFjZTo6TGFiOgorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFibGVDR0Nv
bG9yU3BhY2U8Q29sb3JTcGFjZTo6TGFiPigpOworICAgIGNhc2UgQ29sb3JTcGFjZTo6TGluZWFy
U1JHQjoKKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9yU3Bh
Y2U6OkxpbmVhclNSR0I+KCk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpPS0xDSDoKKyAgICAgICAg
cmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlPENvbG9yU3BhY2U6Ok9LTENIPigpOwog
ICAgIGNhc2UgQ29sb3JTcGFjZTo6T0tMYWI6CisgICAgICAgIHJldHVybiBjYWNoZWROdWxsYWJs
ZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNlOjpPS0xhYj4oKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6
OlByb1Bob3RvUkdCOgorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8
Q29sb3JTcGFjZTo6UHJvUGhvdG9SR0I+KCk7CisgICAgY2FzZSBDb2xvclNwYWNlOjpSZWMyMDIw
OgorICAgICAgICByZXR1cm4gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2U8Q29sb3JTcGFjZTo6
UmVjMjAyMD4oKTsKKyAgICBjYXNlIENvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHJldHVybiBj
YWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNlOjpTUkdCPigpOworICAgIGNhc2Ug
Q29sb3JTcGFjZTo6WFlaX0Q1MDoKKyAgICAgICAgcmV0dXJuIGNhY2hlZE51bGxhYmxlQ0dDb2xv
clNwYWNlPENvbG9yU3BhY2U6OlhZWl9ENTA+KCk7CiAgICAgY2FzZSBDb2xvclNwYWNlOjpYWVpf
RDY1OgotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotCisgICAgICAgIHJldHVybiBjYWNoZWRO
dWxsYWJsZUNHQ29sb3JTcGFjZTxDb2xvclNwYWNlOjpYWVpfRDY1PigpOwogICAgIH0KKwogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQo=
</data>
<flag name="commit-queue"
          id="474644"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>