<?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>163722</bug_id>
          
          <creation_ts>2016-10-20 04:13:04 -0700</creation_ts>
          <short_desc>[GTK] Avoid including egl.h headers in internal headers</short_desc>
          <delta_ts>2016-10-20 05:40:48 -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>Platform</component>
          <version>WebKit Local 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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1242320</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-10-20 04:13:04 -0700</bug_when>
    <thetext>egl.h includes eglplatform.h that decides the native types for the platform at compile time. However, we support to build with X11 and Wayland at the same time and decide what to use at runtime. Currently GLContext.h includes eglplatform.h after wayland-egl.h if Wayland is enabled. That means that the wayland native types are used by default from all cpp files including GLContext.h. It currently works on X11 because we cast the value anyway and for example EGLNativeWindowType is a pointer in Wayland that can be casted to unsigned long in X11 to represent the X Window. This is very fragile in any case, we should avoid adding egl headers in our headers and only include it in cpp files. But we also need to ensure we don&apos;t use X11 and Wayland in the same cpp file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242321</commentid>
    <comment_count>1</comment_count>
      <attachid>292166</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-10-20 04:16:50 -0700</bug_when>
    <thetext>Created attachment 292166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242322</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-20 04:18:28 -0700</bug_when>
    <thetext>Attachment 292166 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp:27:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242334</commentid>
    <comment_count>3</comment_count>
      <attachid>292166</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-10-20 05:29:24 -0700</bug_when>
    <thetext>Comment on attachment 292166
Patch

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

&gt; Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp:79
&gt; +    return std::unique_ptr&lt;GLContextEGL&gt;(new GLContextEGL(platformDisplay, context, surface, WTFMove(wlSurface), window));

Is std::make_unique&lt;&gt;() usable here?

&gt; Source/WebCore/platform/graphics/egl/GLContextEGLX11.cpp:99
&gt; +    return std::unique_ptr&lt;GLContextEGL&gt;(new GLContextEGL(platformDisplay, context, surface, WTFMove(pixmap)));

Is std::make_unique&lt;&gt;() usable here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242335</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-10-20 05:37:11 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 292166 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=292166&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGLWayland.cpp:79
&gt; &gt; +    return std::unique_ptr&lt;GLContextEGL&gt;(new GLContextEGL(platformDisplay, context, surface, WTFMove(wlSurface), window));
&gt; 
&gt; Is std::make_unique&lt;&gt;() usable here?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/egl/GLContextEGLX11.cpp:99
&gt; &gt; +    return std::unique_ptr&lt;GLContextEGL&gt;(new GLContextEGL(platformDisplay, context, surface, WTFMove(pixmap)));
&gt; 
&gt; Is std::make_unique&lt;&gt;() usable here?

Nope, constructors are private to ensure only the create methods can create instances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242337</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-10-20 05:40:48 -0700</bug_when>
    <thetext>Committed r207615: &lt;http://trac.webkit.org/changeset/207615&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292166</attachid>
            <date>2016-10-20 04:16:50 -0700</date>
            <delta_ts>2016-10-20 05:29:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-egl-platform-conflicts.diff</filename>
            <type>text/plain</type>
            <size>30290</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmN2ZhOGY0Li43YjgzN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDYg
QEAKIDIwMTYtMTAtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIEF2b2lkIGluY2x1ZGluZyBlZ2wuaCBoZWFkZXJzIGluIGludGVy
bmFsIGhlYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzcyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGVnbC5oIGluY2x1ZGVzIGVnbHBsYXRmb3JtLmggdGhhdCBkZWNpZGVzIHRoZSBuYXRpdmUg
dHlwZXMgZm9yIHRoZSBwbGF0Zm9ybSBhdCBjb21waWxlIHRpbWUuIEhvd2V2ZXIsIHdlIHN1cHBv
cnQKKyAgICAgICAgdG8gYnVpbGQgd2l0aCBYMTEgYW5kIFdheWxhbmQgYXQgdGhlIHNhbWUgdGlt
ZSBhbmQgZGVjaWRlIHdoYXQgdG8gdXNlIGF0IHJ1bnRpbWUuIEN1cnJlbnRseSBHTENvbnRleHQu
aCBpbmNsdWRlcworICAgICAgICBlZ2xwbGF0Zm9ybS5oIGFmdGVyIHdheWxhbmQtZWdsLmggaWYg
V2F5bGFuZCBpcyBlbmFibGVkLiBUaGF0IG1lYW5zIHRoYXQgdGhlIHdheWxhbmQgbmF0aXZlIHR5
cGVzIGFyZSB1c2VkIGJ5CisgICAgICAgIGRlZmF1bHQgZnJvbSBhbGwgY3BwIGZpbGVzIGluY2x1
ZGluZyBHTENvbnRleHQuaC4gSXQgY3VycmVudGx5IHdvcmtzIGluIFgxMSBiZWNhdXNlIHdlIGNh
c3QgdGhlIHZhbHVlIGFueXdheSBhbmQKKyAgICAgICAgZm9yIGV4YW1wbGUgRUdMTmF0aXZlV2lu
ZG93VHlwZSBpcyBhIHBvaW50ZXIgaW4gV2F5bGFuZCB0aGF0IGNhbiBiZSBjYXN0ZWQgdG8gdW5z
aWduZWQgbG9uZyBpbiBYMTEgdG8gcmVwcmVzZW50CisgICAgICAgIHRoZSBYIFdpbmRvdy4gVGhp
cyBpcyB2ZXJ5IGZyYWdpbGUgaW4gYW55IGNhc2UsIHdlIHNob3VsZCBhdm9pZCBhZGRpbmcgZWds
IGhlYWRlcnMgaW4gb3VyIGhlYWRlcnMgYW5kIG9ubHkKKyAgICAgICAgaW5jbHVkZSBpdCBpbiBj
cHAgZmlsZXMuIEJ1dCB3ZSBhbHNvIG5lZWQgdG8gZW5zdXJlIHdlIGRvbid0IHVzZSBYMTEgYW5k
IFdheWxhbmQgaW4gdGhlIHNhbWUgY3BwIGZpbGUuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5j
bWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVH
TDo6Y3JlYXRlV2luZG93Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6
OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjp+R0xDb250
ZXh0RUdMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKToK
KyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93U3VyZmFjZVdheWxh
bmQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVXYXlsYW5kQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmRlc3Ryb3lXYXlsYW5kV2luZG93
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDExLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd1N1cmZhY2VYMTEpOgor
ICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlV2luZG93Q29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpHTENvbnRleHRHTFg6OmNyZWF0ZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
R0xDb250ZXh0R0xYOjpHTENvbnRleHRHTFgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dseC9HTENvbnRleHRHTFguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5k
L1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuY3BwOgorCisyMDE2LTEwLTIwICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RLXSBBdm9pZCBzdHJz
dHIoKSB3aGVuIGNoZWNraW5nIChFKUdMIGV4dGVuc2lvbnMKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTk1OAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlCmluZGV4IDE2ZWRhZDQuLmJhYWE1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBA
IC0xMjYsNiArMTI2LDggQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vVHJhbnNmb3JtYXRpb25NYXRyaXhDYWlyby5jcHAKIAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTFdheWxhbmQuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTFgxMS5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDYWNoZUZyZWVUeXBlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HTENvbnRleHQuY3BwCmluZGV4IDZmZGE2MzEuLmMxOTk3ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcApAQCAtODQsMTIg
Kzg0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dD4gR0xDb250ZXh0OjpjcmVhdGVDb250
ZXh0Rm9yV2luZG93KEdMTmF0aXZlV2luZG93VHlwZQogI2VuZGlmCiAKICNpZiBVU0UoR0xYKQot
I2lmIFBMQVRGT1JNKFdBWUxBTkQpIC8vIEJ1aWxkaW5nIGJvdGggWDExIGFuZCBXYXlsYW5kIHRh
cmdldHMKLSAgICBYSUQgR0xYV2luZG93SGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDxYSUQ+KHdp
bmRvd0hhbmRsZSk7Ci0jZWxzZQotICAgIFhJRCBHTFhXaW5kb3dIYW5kbGUgPSBzdGF0aWNfY2Fz
dDxYSUQ+KHdpbmRvd0hhbmRsZSk7Ci0jZW5kaWYKLSAgICBpZiAoYXV0byBnbHhDb250ZXh0ID0g
R0xDb250ZXh0R0xYOjpjcmVhdGVDb250ZXh0KEdMWFdpbmRvd0hhbmRsZSwgZGlzcGxheSkpCisg
ICAgaWYgKGF1dG8gZ2x4Q29udGV4dCA9IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dCh3aW5k
b3dIYW5kbGUsIGRpc3BsYXkpKQogICAgICAgICByZXR1cm4gV1RGTW92ZShnbHhDb250ZXh0KTsK
ICNlbmRpZgogI2lmIFVTRShFR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HTENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dMQ29udGV4dC5oCmluZGV4IGI0MTE3MGIuLjU3NmNjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCkBAIC0yNywxMCArMjcsNiBAQAogI2lmIFVT
RShFR0wpICYmICFQTEFURk9STShHVEspCiAjaW5jbHVkZSAiZWdscGxhdGZvcm0uaCIKIHR5cGVk
ZWYgRUdMTmF0aXZlV2luZG93VHlwZSBHTE5hdGl2ZVdpbmRvd1R5cGU7Ci0jZWxpZiBQTEFURk9S
TShHVEspICYmIFBMQVRGT1JNKFdBWUxBTkQpICYmICFkZWZpbmVkKEdUS19BUElfVkVSU0lPTl8y
KQotI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+Ci0jaW5jbHVkZSA8RUdML2VnbHBsYXRmb3JtLmg+
Ci10eXBlZGVmIEVHTE5hdGl2ZVdpbmRvd1R5cGUgR0xOYXRpdmVXaW5kb3dUeXBlOwogI2Vsc2UK
IHR5cGVkZWYgdWludDY0X3QgR0xOYXRpdmVXaW5kb3dUeXBlOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCmlu
ZGV4IDE5NDhmMmUuLmEwODZlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCkBAIC0yMiw2ICsyMiw4IEBACiAjaWYg
VVNFKEVHTCkKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1EaXNwbGF5LmgiCisjaW5jbHVkZSA8RUdML2VnbC5oPgogCiAjaWYgVVNFKENBSVJPKQog
I2luY2x1ZGUgPGNhaXJvLmg+CkBAIC0zNCwxOCArMzYsNiBAQAogI2luY2x1ZGUgIk9wZW5HTFNo
aW1zLmgiCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFgxMSkKLSNpbmNsdWRlICJQbGF0Zm9ybURp
c3BsYXlYMTEuaCIKLSNpbmNsdWRlICJYRXJyb3JUcmFwcGVyLmgiCi0jaW5jbHVkZSAiWFVuaXF1
ZVB0ci5oIgotI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdB
WUxBTkQpCi0jaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5oIgotI2luY2x1ZGUgPHdh
eWxhbmQtZWdsLmg+Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
CiAvLyBjYWlyby1nbC5oIGluY2x1ZGVzIHNvbWUgZGVmaW5pdGlvbnMgZnJvbSBHTFggdGhhdCBj
b25mbGljdCB3aXRoCiAvLyB0aGUgb25lcyBwcm92aWRlZCBieSB1cy4gU2luY2UgR0xDb250ZXh0
RUdMIGRvZXNuJ3QgdXNlIGFueSBHTFgKQEAgLTEwMyw3ICs5Myw3IEBAIGJvb2wgR0xDb250ZXh0
RUdMOjpnZXRFR0xDb25maWcoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb25maWcqIGNvbmZpZywg
RUdMU3VyZmFjCiAgICAgcmV0dXJuIGVnbENob29zZUNvbmZpZyhkaXNwbGF5LCBhdHRyaWJ1dGVM
aXN0LCBjb25maWcsIDEsICZudW1iZXJDb25maWdzUmV0dXJuZWQpICYmIG51bWJlckNvbmZpZ3NS
ZXR1cm5lZDsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdM
OjpjcmVhdGVXaW5kb3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBQbGF0Zm9y
bURpc3BsYXkmIHBsYXRmb3JtRGlzcGxheSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3N0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29u
dGV4dChHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3Jt
RGlzcGxheSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKIHsKICAgICBFR0xEaXNwbGF5IGRp
c3BsYXkgPSBwbGF0Zm9ybURpc3BsYXkuZWdsRGlzcGxheSgpOwogICAgIEVHTENvbmZpZyBjb25m
aWc7CkBAIC0xMTQsNyArMTA0LDE5IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdM
Q29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dChFR0xOYXRpdmVXaW5kb3dUCiAgICAgaWYg
KGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShkaXNwbGF5LCBj
b25maWcsIHdpbmRvdywgMCk7CisgICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gRUdMX05PX1NVUkZB
Q0U7CisjaWYgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKFgxMSkKKyAgICBpZiAocGxhdGZv
cm1EaXNwbGF5LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkKKyAgICAgICAg
c3VyZmFjZSA9IGNyZWF0ZVdpbmRvd1N1cmZhY2VYMTEoZGlzcGxheSwgY29uZmlnLCB3aW5kb3cp
OworI2VuZGlmCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICBpZiAocGxhdGZvcm1EaXNwbGF5
LnR5cGUoKSA9PSBQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OldheWxhbmQpCisgICAgICAgIHN1cmZh
Y2UgPSBjcmVhdGVXaW5kb3dTdXJmYWNlV2F5bGFuZChkaXNwbGF5LCBjb25maWcsIHdpbmRvdyk7
CisjZW5kaWYKKyNlbHNlCisgICAgc3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UoZGlz
cGxheSwgY29uZmlnLCBzdGF0aWNfY2FzdDxFR0xOYXRpdmVXaW5kb3dUeXBlPih3aW5kb3cpLCBu
dWxscHRyKTsKKyNlbmRpZgogICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7CiAg
ICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTE2NSw5MCArMTY3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVTdXJmYWNlbGVzc0NvbnRleHQoUGxhdGZvcm1EaXMK
ICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4obmV3IEdMQ29udGV4dEVH
TChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIEVHTF9OT19TVVJGQUNFLCBTdXJmYWNlbGVzcykp
OwogfQogCi0jaWYgUExBVEZPUk0oWDExKQotc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4g
R0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYgcGxhdGZv
cm1EaXNwbGF5LCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0KQotewotICAgIEVHTERpc3BsYXkg
ZGlzcGxheSA9IHBsYXRmb3JtRGlzcGxheS5lZ2xEaXNwbGF5KCk7Ci0gICAgRUdMQ29uZmlnIGNv
bmZpZzsKLSAgICBpZiAoIWdldEVHTENvbmZpZyhkaXNwbGF5LCAmY29uZmlnLCBQaXhtYXBTdXJm
YWNlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBFR0xDb250ZXh0IGNvbnRleHQg
PSBlZ2xDcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGdDb250
ZXh0QXR0cmlidXRlcyk7Ci0gICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRFWFQpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRUdMaW50IHZpc3VhbElkOwotICAgIGlmICghZWds
R2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX05BVElWRV9WSVNVQUxfSUQsICZ2
aXN1YWxJZCkpIHsKLSAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIERpc3BsYXkqIHgxMURpc3Bs
YXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHBsYXRmb3JtRGlzcGxheSkubmF0aXZl
KCk7Ci0KLSAgICBYVmlzdWFsSW5mbyB2aXN1YWxJbmZvOwotICAgIHZpc3VhbEluZm8udmlzdWFs
aWQgPSB2aXN1YWxJZDsKLSAgICBpbnQgbnVtVmlzdWFscyA9IDA7Ci0gICAgWFVuaXF1ZVB0cjxY
VmlzdWFsSW5mbz4gdmlzdWFsSW5mb0xpc3QoWEdldFZpc3VhbEluZm8oeDExRGlzcGxheSwgVmlz
dWFsSURNYXNrLCAmdmlzdWFsSW5mbywgJm51bVZpc3VhbHMpKTsKLSAgICBpZiAoIXZpc3VhbElu
Zm9MaXN0IHx8ICFudW1WaXN1YWxzKSB7Ci0gICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3Bs
YXksIGNvbnRleHQpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICAvLyBX
ZSBhcmUgdXNpbmcgVmlzdWFsSURNYXNrIHNvIHRoZXJlIG11c3QgYmUgb25seSBvbmUuCi0gICAg
QVNTRVJUKG51bVZpc3VhbHMgPT0gMSk7Ci0gICAgWFVuaXF1ZVBpeG1hcCBwaXhtYXAgPSBYQ3Jl
YXRlUGl4bWFwKHgxMURpc3BsYXksIERlZmF1bHRSb290V2luZG93KHgxMURpc3BsYXkpLCAxLCAx
LCB2aXN1YWxJbmZvTGlzdC5nZXQoKVswXS5kZXB0aCk7Ci0gICAgaWYgKCFwaXhtYXApIHsKLSAg
ICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIH0KLQotICAgIC8vIFNvbWUgZHJpdmVycyBmYWlsIHRvIGNyZWF0ZSB0
aGUgc3VyZmFjZSBwcm9kdWNpbmcgQmFkRHJhd2FibGUgWCBlcnJvciBhbmQgdGhlIGRlZmF1bHQg
WEVycm9yIGhhbmRsZXIgbm9ybWFsbHkgYWJvcnRzLgotICAgIC8vIEhvd2V2ZXIsIGlmIHRoZSBY
IGVycm9yIGlzIGlnbm9yZWQsIGVnbENyZWF0ZVBpeG1hcFN1cmZhY2UoKSBlbmRzIHVwIHJldHVy
bmluZyBhIHN1cmZhY2UgYW5kIHdlIGNhbiBjb250aW51ZSBjcmVhdGluZwotICAgIC8vIHRoZSBj
b250ZXh0LiBTaW5jZSB0aGlzIGlzIGFuIG9mZnNjcmVlbiBjb250ZXh0LCBpdCBkb2Vzbid0IG1h
dHRlciBpZiB0aGUgcGl4bWFwIHVzZWQgaXMgbm90IHZhbGlkIGJlY2F1c2Ugd2UgbmV2ZXIgZG8K
LSAgICAvLyBzd2FwIGJ1ZmZlcnMuIFNvLCB3ZSB1c2UgYSBjdXN0b20gWEVycm9yIGhhbmRsZXIg
aGVyZSB0aGF0IGlnbm9yZXMgQmFkRHJhd2FibGUgZXJyb3JzIGFuZCBvbmx5IHdhcm5zIGFib3V0
IGFueSBvdGhlcgotICAgIC8vIGVycm9ycyB3aXRob3V0IGFib3J0aW5nIGluIGFueSBjYXNlLgot
ICAgIFhFcnJvclRyYXBwZXIgdHJhcHBlcih4MTFEaXNwbGF5LCBYRXJyb3JUcmFwcGVyOjpQb2xp
Y3k6Oldhcm4sIHsgQmFkRHJhd2FibGUgfSk7Ci0gICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWds
Q3JlYXRlUGl4bWFwU3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdM
TmF0aXZlUGl4bWFwVHlwZT4ocGl4bWFwLmdldCgpKSwgMCk7Ci0gICAgaWYgKHN1cmZhY2UgPT0g
RUdMX05PX1NVUkZBQ0UpIHsKLSAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29u
dGV4dCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPihuZXcgR0xDb250ZXh0RUdMKHBsYXRmb3JtRGlzcGxh
eSwgY29udGV4dCwgc3VyZmFjZSwgV1RGTW92ZShwaXhtYXApKSk7Ci19Ci0jZW5kaWYgLy8gUExB
VEZPUk0oWDExKQotCi0jaWYgUExBVEZPUk0oV0FZTEFORCkKLXN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlV2F5bGFuZENvbnRleHQoUGxhdGZvcm1EaXNw
bGF5JiBwbGF0Zm9ybURpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCi17Ci0gICAg
RUdMRGlzcGxheSBkaXNwbGF5ID0gcGxhdGZvcm1EaXNwbGF5LmVnbERpc3BsYXkoKTsKLSAgICBF
R0xDb25maWcgY29uZmlnOwotICAgIGlmICghZ2V0RUdMQ29uZmlnKGRpc3BsYXksICZjb25maWcs
IFdpbmRvd1N1cmZhY2UpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEVHTENvbnRl
eHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29u
dGV4dCwgZ0NvbnRleHRBdHRyaWJ1dGVzKTsKLSAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09O
VEVYVCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBXbFVuaXF1ZVB0cjxzdHJ1Y3Qg
d2xfc3VyZmFjZT4gd2xTdXJmYWNlKGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVdheWxhbmQ+KHBs
YXRmb3JtRGlzcGxheSkuY3JlYXRlU3VyZmFjZSgpKTsKLSAgICBpZiAoIXdsU3VyZmFjZSkgewot
ICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cgPSB3
bF9lZ2xfd2luZG93X2NyZWF0ZSh3bFN1cmZhY2UuZ2V0KCksIDEsIDEpOwotICAgIEVHTFN1cmZh
Y2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UoZGlzcGxheSwgY29uZmlnLCB3aW5k
b3csIDApOwotICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7Ci0gICAgICAgIGVn
bERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwotICAgICAgICB3bF9lZ2xfd2luZG93
X2Rlc3Ryb3kod2luZG93KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+KG5ldyBHTENvbnRleHRFR0wocGxh
dGZvcm1EaXNwbGF5LCBjb250ZXh0LCBzdXJmYWNlLCBXVEZNb3ZlKHdsU3VyZmFjZSksIHdpbmRv
dykpOwotfQotI2VuZGlmCi0KLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4
dEVHTDo6Y3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgUGxhdGZvcm1E
aXNwbGF5JiBwbGF0Zm9ybURpc3BsYXkpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBH
TENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQoR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgUGxh
dGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXkpCiB7CiAgICAgaWYgKHBsYXRmb3JtRGlzcGxh
eS5lZ2xEaXNwbGF5KCkgPT0gRUdMX05PX0RJU1BMQVkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMzExLDI5ICsyMzAsNiBAQCBHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0Zm9y
bURpc3BsYXkmIGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZgogICAgIEFTU0VS
VCh0eXBlID09IFN1cmZhY2VsZXNzIHx8IHN1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpOwogfQog
Ci0jaWYgUExBVEZPUk0oWDExKQotR0xDb250ZXh0RUdMOjpHTENvbnRleHRFR0woUGxhdGZvcm1E
aXNwbGF5JiBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwg
WFVuaXF1ZVBpeG1hcCYmIHBpeG1hcCkKLSAgICA6IEdMQ29udGV4dChkaXNwbGF5KQotICAgICwg
bV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKLSAgICAsIG1fdHlw
ZShQaXhtYXBTdXJmYWNlKQotICAgICwgbV9waXhtYXAoV1RGTW92ZShwaXhtYXApKQotewotfQot
I2VuZGlmCi0KLSNpZiBQTEFURk9STShXQVlMQU5EKQotR0xDb250ZXh0RUdMOjpHTENvbnRleHRF
R0woUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZh
Y2Ugc3VyZmFjZSwgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+JiYgd2xTdXJmYWNlLCBF
R0xOYXRpdmVXaW5kb3dUeXBlIHdsV2luZG93KQotICAgIDogR0xDb250ZXh0KGRpc3BsYXkpCi0g
ICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQotICAgICwg
bV90eXBlKFdpbmRvd1N1cmZhY2UpCi0gICAgLCBtX3dsU3VyZmFjZShXVEZNb3ZlKHdsU3VyZmFj
ZSkpCi0gICAgLCBtX3dsV2luZG93KHdsV2luZG93KQotewotfQotI2VuZGlmCi0KIEdMQ29udGV4
dEVHTDo6fkdMQ29udGV4dEVHTCgpCiB7CiAjaWYgVVNFKENBSVJPKQpAQCAtMzUyLDggKzI0OCw3
IEBAIEdMQ29udGV4dEVHTDo6fkdMQ29udGV4dEVHTCgpCiAgICAgICAgIGVnbERlc3Ryb3lTdXJm
YWNlKGRpc3BsYXksIG1fc3VyZmFjZSk7CiAKICNpZiBQTEFURk9STShXQVlMQU5EKQotICAgIGlm
IChtX3dsV2luZG93KQotICAgICAgICB3bF9lZ2xfd2luZG93X2Rlc3Ryb3kobV93bFdpbmRvdyk7
CisgICAgZGVzdHJveVdheWxhbmRXaW5kb3coKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKaW5kZXggNzAy
NTM1Yy4uZTVhMzM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VnbC9HTENvbnRleHRFR0wuaApAQCAtMTcsMTMgKzE3LDExIEBACiAgKiAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxIFVTQQogICovCiAKLSNpZm5kZWYgR0xDb250ZXh0RUdMX2gKLSNkZWZpbmUg
R0xDb250ZXh0RUdMX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgVVNFKEVHTCkKIAogI2luY2x1ZGUg
IkdMQ29udGV4dC5oIgotI2luY2x1ZGUgPEVHTC9lZ2wuaD4KIAogI2lmIFBMQVRGT1JNKFgxMSkK
ICNpbmNsdWRlICJYVW5pcXVlUmVzb3VyY2UuaCIKQEAgLTMxLDE4ICsyOSwyNSBAQAogCiAjaWYg
UExBVEZPUk0oV0FZTEFORCkKICNpbmNsdWRlICJXbFVuaXF1ZVB0ci5oIgorc3RydWN0IHdsX2Vn
bF93aW5kb3c7CiAjZW5kaWYKIAordHlwZWRlZiB2b2lkICpFR0xDb25maWc7Cit0eXBlZGVmIHZv
aWQgKkVHTENvbnRleHQ7Cit0eXBlZGVmIHZvaWQgKkVHTERpc3BsYXk7Cit0eXBlZGVmIHZvaWQg
KkVHTFN1cmZhY2U7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR0xDb250ZXh0RUdM
IGZpbmFsIDogcHVibGljIEdMQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR0xD
b250ZXh0RUdMKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4gY3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlLCBQbGF0Zm9ybURpc3BsYXkm
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlQ29udGV4
dChHTE5hdGl2ZVdpbmRvd1R5cGUsIFBsYXRmb3JtRGlzcGxheSYpOwogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURp
c3BsYXkmKTsKIAogICAgIHZpcnR1YWwgfkdMQ29udGV4dEVHTCgpOwogCitwcml2YXRlOgogICAg
IGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzd2FwQnVmZmVy
cygpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FpdE5hdGl2ZSgpIG92ZXJyaWRlOwpAQCAtNTgsNyAr
NjMsNiBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNv
bnRleHQoKSBvdmVycmlkZTsKICNlbmRpZgogCi1wcml2YXRlOgogICAgIGVudW0gRUdMU3VyZmFj
ZVR5cGUgeyBQYnVmZmVyU3VyZmFjZSwgV2luZG93U3VyZmFjZSwgUGl4bWFwU3VyZmFjZSwgU3Vy
ZmFjZWxlc3MgfTsKIAogICAgIEdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250
ZXh0LCBFR0xTdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSk7CkBAIC02NiwyMyArNzAsMjYgQEAgcHJp
dmF0ZToKICAgICBHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdM
U3VyZmFjZSwgWFVuaXF1ZVBpeG1hcCYmKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFdBWUxBTkQp
Ci0gICAgR0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQsIEVHTFN1cmZh
Y2UsIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9zdXJmYWNlPiYmLCBFR0xOYXRpdmVXaW5kb3dUeXBl
KTsKKyAgICBHTENvbnRleHRFR0woUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCwgRUdMU3Vy
ZmFjZSwgV2xVbmlxdWVQdHI8c3RydWN0IHdsX3N1cmZhY2U+JiYsIHN0cnVjdCB3bF9lZ2xfd2lu
ZG93Kik7CisgICAgdm9pZCBkZXN0cm95V2F5bGFuZFdpbmRvdygpOwogI2VuZGlmCiAKLSAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlV2luZG93Q29udGV4dChF
R0xOYXRpdmVXaW5kb3dUeXBlLCBQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0IHNoYXJpbmdD
b250ZXh0ID0gRUdMX05PX0NPTlRFWFQpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xD
b250ZXh0RUdMPiBjcmVhdGVQYnVmZmVyQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250
ZXh0IHNoYXJpbmdDb250ZXh0ID0gRUdMX05PX0NPTlRFWFQpOwotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVTdXJmYWNlbGVzc0NvbnRleHQoUGxhdGZvcm1E
aXNwbGF5JiwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCA9IEVHTF9OT19DT05URVhUKTsKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlV2luZG93Q29udGV4
dChHTE5hdGl2ZVdpbmRvd1R5cGUsIFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQgc2hhcmlu
Z0NvbnRleHQgPSBudWxscHRyKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4gY3JlYXRlUGJ1ZmZlckNvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiwgRUdMQ29udGV4dCBz
aGFyaW5nQ29udGV4dCA9IG51bGxwdHIpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xD
b250ZXh0RUdMPiBjcmVhdGVTdXJmYWNlbGVzc0NvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiwgRUdM
Q29udGV4dCBzaGFyaW5nQ29udGV4dCA9IG51bGxwdHIpOwogI2lmIFBMQVRGT1JNKFgxMSkKLSAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlUGl4bWFwQ29udGV4
dChQbGF0Zm9ybURpc3BsYXkmLCBFR0xDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0gRUdMX05PX0NP
TlRFWFQpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVQ
aXhtYXBDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQg
PSBudWxscHRyKTsKKyAgICBzdGF0aWMgRUdMU3VyZmFjZSBjcmVhdGVXaW5kb3dTdXJmYWNlWDEx
KEVHTERpc3BsYXksIEVHTENvbmZpZywgR0xOYXRpdmVXaW5kb3dUeXBlKTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKFdBWUxBTkQpCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRF
R0w+IGNyZWF0ZVdheWxhbmRDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEVHTENvbnRleHQgc2hh
cmluZ0NvbnRleHQgPSBFR0xfTk9fQ09OVEVYVCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHRFR0w+IGNyZWF0ZVdheWxhbmRDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEVH
TENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBudWxscHRyKTsKKyAgICBzdGF0aWMgRUdMU3VyZmFj
ZSBjcmVhdGVXaW5kb3dTdXJmYWNlV2F5bGFuZChFR0xEaXNwbGF5LCBFR0xDb25maWcsIEdMTmF0
aXZlV2luZG93VHlwZSk7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIGdldEVHTENvbmZpZyhF
R0xEaXNwbGF5LCBFR0xDb25maWcqLCBFR0xTdXJmYWNlVHlwZSk7CiAKLSAgICBFR0xDb250ZXh0
IG1fY29udGV4dCB7IEVHTF9OT19DT05URVhUIH07Ci0gICAgRUdMU3VyZmFjZSBtX3N1cmZhY2Ug
eyBFR0xfTk9fU1VSRkFDRSB9OworICAgIEVHTENvbnRleHQgbV9jb250ZXh0IHsgbnVsbHB0ciB9
OworICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlIHsgbnVsbHB0ciB9OwogICAgIEVHTFN1cmZhY2VU
eXBlIG1fdHlwZTsKICNpZiBQTEFURk9STShYMTEpCiAgICAgWFVuaXF1ZVBpeG1hcCBtX3BpeG1h
cDsKQEAgLTk5LDUgKzEwNiwzIEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBVU0UoRUdMKQotCi0jZW5kaWYgLy8gR0xDb250ZXh0RUdMX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xXYXls
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0xXYXlsYW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGVkNTZm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTFdheWxhbmQuY3BwCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgSWdhbGlhLCBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0RUdMLmgiCisKKyNpZiBV
U0UoRUdMKSAmJiBQTEFURk9STShXQVlMQU5EKQorCisjaW5jbHVkZSAiUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZC5oIgorLy8gVGhlc2UgaW5jbHVkZXMgbmVlZCB0byBiZSBpbiB0aGlzIG9yZGVyIGJl
Y2F1c2Ugd2F5bGFuZC1lZ2wuaCBkZWZpbmVzIFdMX0VHTF9QTEFURk9STQorLy8gYW5kIGVnbC5o
IGNoZWNrcyB0aGF0IHRvIGRlY2lkZSB3aGV0aGVyIGl0J3MgV2F5bGFuZCBwbGF0Zm9ybS4KKyNp
bmNsdWRlIDx3YXlsYW5kLWVnbC5oPgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChQbGF0Zm9ybURpc3BsYXkm
IGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlLCBXbFVuaXF1
ZVB0cjxzdHJ1Y3Qgd2xfc3VyZmFjZT4mJiB3bFN1cmZhY2UsIHN0cnVjdCB3bF9lZ2xfd2luZG93
KiB3bFdpbmRvdykKKyAgICA6IEdMQ29udGV4dChkaXNwbGF5KQorICAgICwgbV9jb250ZXh0KGNv
bnRleHQpCisgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKKyAgICAsIG1fdHlwZShXaW5kb3dTdXJm
YWNlKQorICAgICwgbV93bFN1cmZhY2UoV1RGTW92ZSh3bFN1cmZhY2UpKQorICAgICwgbV93bFdp
bmRvdyh3bFdpbmRvdykKK3sKK30KKworRUdMU3VyZmFjZSBHTENvbnRleHRFR0w6OmNyZWF0ZVdp
bmRvd1N1cmZhY2VXYXlsYW5kKEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29uZmlnIGNvbmZpZywg
R0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykKK3sKKyAgICByZXR1cm4gZWdsQ3JlYXRlV2luZG93
U3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMTmF0aXZlV2luZG93
VHlwZT4od2luZG93KSwgbnVsbHB0cik7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRF
R0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlV2F5bGFuZENvbnRleHQoUGxhdGZvcm1EaXNwbGF5JiBw
bGF0Zm9ybURpc3BsYXksIEVHTENvbnRleHQgc2hhcmluZ0NvbnRleHQpCit7CisgICAgRUdMRGlz
cGxheSBkaXNwbGF5ID0gcGxhdGZvcm1EaXNwbGF5LmVnbERpc3BsYXkoKTsKKyAgICBFR0xDb25m
aWcgY29uZmlnOworICAgIGlmICghZ2V0RUdMQ29uZmlnKGRpc3BsYXksICZjb25maWcsIFdpbmRv
d1N1cmZhY2UpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0YXRpYyBjb25zdCBF
R0xpbnQgY29udGV4dEF0dHJpYnV0ZXNbXSA9IHsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisgICAg
ICAgIEVHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAyLAorI2VuZGlmCisgICAgICAgIEVHTF9O
T05FCisgICAgfTsKKworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQo
ZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgY29udGV4dEF0dHJpYnV0ZXMpOworICAg
IGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIFdsVW5pcXVlUHRyPHN0cnVjdCB3bF9zdXJmYWNlPiB3bFN1cmZhY2UoZG93bmNhc3Q8
UGxhdGZvcm1EaXNwbGF5V2F5bGFuZD4ocGxhdGZvcm1EaXNwbGF5KS5jcmVhdGVTdXJmYWNlKCkp
OworICAgIGlmICghd2xTdXJmYWNlKSB7CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3Bs
YXksIGNvbnRleHQpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBFR0xO
YXRpdmVXaW5kb3dUeXBlIHdpbmRvdyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKHdsU3VyZmFjZS5n
ZXQoKSwgMSwgMSk7CisgICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3Vy
ZmFjZShkaXNwbGF5LCBjb25maWcsIHdpbmRvdywgMCk7CisgICAgaWYgKHN1cmZhY2UgPT0gRUdM
X05PX1NVUkZBQ0UpIHsKKyAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4
dCk7CisgICAgICAgIHdsX2VnbF93aW5kb3dfZGVzdHJveSh3aW5kb3cpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4obmV3IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZhY2Us
IFdURk1vdmUod2xTdXJmYWNlKSwgd2luZG93KSk7Cit9CisKK3ZvaWQgR0xDb250ZXh0RUdMOjpk
ZXN0cm95V2F5bGFuZFdpbmRvdygpCit7CisgICAgaWYgKG1fd2xXaW5kb3cpCisgICAgICAgIHds
X2VnbF93aW5kb3dfZGVzdHJveShtX3dsV2luZG93KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gIFVTRShFR0wpICYmIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMWDEx
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0xY
MTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZGQ0Y2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250
ZXh0RUdMWDExLmNwcApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBJZ2FsaWEsIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJHTENvbnRleHRFR0wuaCIKKworI2lmIFVTRShFR0wpICYm
IFBMQVRGT1JNKFgxMSkKKyNpbmNsdWRlICJQbGF0Zm9ybURpc3BsYXlYMTEuaCIKKyNpbmNsdWRl
ICJYRXJyb3JUcmFwcGVyLmgiCisjaW5jbHVkZSAiWFVuaXF1ZVB0ci5oIgorI2luY2x1ZGUgPEVH
TC9lZ2wuaD4KKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0dMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSwgRUdM
Q29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UsIFhVbmlxdWVQaXhtYXAmJiBwaXht
YXApCisgICAgOiBHTENvbnRleHQoZGlzcGxheSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQor
ICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCisgICAgLCBtX3R5cGUoUGl4bWFwU3VyZmFjZSkKKyAg
ICAsIG1fcGl4bWFwKFdURk1vdmUocGl4bWFwKSkKK3sKK30KKworRUdMU3VyZmFjZSBHTENvbnRl
eHRFR0w6OmNyZWF0ZVdpbmRvd1N1cmZhY2VYMTEoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb25m
aWcgY29uZmlnLCBHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KQoreworICAgIHJldHVybiBlZ2xD
cmVhdGVXaW5kb3dTdXJmYWNlKGRpc3BsYXksIGNvbmZpZywgc3RhdGljX2Nhc3Q8RUdMTmF0aXZl
V2luZG93VHlwZT4od2luZG93KSwgbnVsbHB0cik7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChQbGF0Zm9ybURpc3Bs
YXkmIHBsYXRmb3JtRGlzcGxheSwgRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAgICBF
R0xEaXNwbGF5IGRpc3BsYXkgPSBwbGF0Zm9ybURpc3BsYXkuZWdsRGlzcGxheSgpOworICAgIEVH
TENvbmZpZyBjb25maWc7CisgICAgaWYgKCFnZXRFR0xDb25maWcoZGlzcGxheSwgJmNvbmZpZywg
UGl4bWFwU3VyZmFjZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgc3RhdGljIGNv
bnN0IEVHTGludCBjb250ZXh0QXR0cmlidXRlc1tdID0geworI2lmIFVTRShPUEVOR0xfRVNfMikK
KyAgICAgICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsCisjZW5kaWYKKyAgICAgICAg
RUdMX05PTkUKKyAgICB9OworICAgIEVHTENvbnRleHQgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRl
eHQoZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgY29udGV4dEF0dHJpYnV0ZXMpOwor
ICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhUKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIEVHTGludCB2aXN1YWxJZDsKKyAgICBpZiAoIWVnbEdldENvbmZpZ0F0dHJpYihk
aXNwbGF5LCBjb25maWcsIEVHTF9OQVRJVkVfVklTVUFMX0lELCAmdmlzdWFsSWQpKSB7CisgICAg
ICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBEaXNwbGF5KiB4MTFEaXNwbGF5ID0gZG93bmNhc3Q8UGxh
dGZvcm1EaXNwbGF5WDExPihwbGF0Zm9ybURpc3BsYXkpLm5hdGl2ZSgpOworCisgICAgWFZpc3Vh
bEluZm8gdmlzdWFsSW5mbzsKKyAgICB2aXN1YWxJbmZvLnZpc3VhbGlkID0gdmlzdWFsSWQ7Cisg
ICAgaW50IG51bVZpc3VhbHMgPSAwOworICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+IHZpc3Vh
bEluZm9MaXN0KFhHZXRWaXN1YWxJbmZvKHgxMURpc3BsYXksIFZpc3VhbElETWFzaywgJnZpc3Vh
bEluZm8sICZudW1WaXN1YWxzKSk7CisgICAgaWYgKCF2aXN1YWxJbmZvTGlzdCB8fCAhbnVtVmlz
dWFscykgeworICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgLy8gV2UgYXJlIHVzaW5nIFZpc3Vh
bElETWFzayBzbyB0aGVyZSBtdXN0IGJlIG9ubHkgb25lLgorICAgIEFTU0VSVChudW1WaXN1YWxz
ID09IDEpOworICAgIFhVbmlxdWVQaXhtYXAgcGl4bWFwID0gWENyZWF0ZVBpeG1hcCh4MTFEaXNw
bGF5LCBEZWZhdWx0Um9vdFdpbmRvdyh4MTFEaXNwbGF5KSwgMSwgMSwgdmlzdWFsSW5mb0xpc3Qu
Z2V0KClbMF0uZGVwdGgpOworICAgIGlmICghcGl4bWFwKSB7CisgICAgICAgIGVnbERlc3Ryb3lD
b250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICAvLyBTb21lIGRyaXZlcnMgZmFpbCB0byBjcmVhdGUgdGhlIHN1cmZhY2UgcHJvZHVj
aW5nIEJhZERyYXdhYmxlIFggZXJyb3IgYW5kIHRoZSBkZWZhdWx0IFhFcnJvciBoYW5kbGVyIG5v
cm1hbGx5IGFib3J0cy4KKyAgICAvLyBIb3dldmVyLCBpZiB0aGUgWCBlcnJvciBpcyBpZ25vcmVk
LCBlZ2xDcmVhdGVQaXhtYXBTdXJmYWNlKCkgZW5kcyB1cCByZXR1cm5pbmcgYSBzdXJmYWNlIGFu
ZCB3ZSBjYW4gY29udGludWUgY3JlYXRpbmcKKyAgICAvLyB0aGUgY29udGV4dC4gU2luY2UgdGhp
cyBpcyBhbiBvZmZzY3JlZW4gY29udGV4dCwgaXQgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHBpeG1h
cCB1c2VkIGlzIG5vdCB2YWxpZCBiZWNhdXNlIHdlIG5ldmVyIGRvCisgICAgLy8gc3dhcCBidWZm
ZXJzLiBTbywgd2UgdXNlIGEgY3VzdG9tIFhFcnJvciBoYW5kbGVyIGhlcmUgdGhhdCBpZ25vcmVz
IEJhZERyYXdhYmxlIGVycm9ycyBhbmQgb25seSB3YXJucyBhYm91dCBhbnkgb3RoZXIKKyAgICAv
LyBlcnJvcnMgd2l0aG91dCBhYm9ydGluZyBpbiBhbnkgY2FzZS4KKyAgICBYRXJyb3JUcmFwcGVy
IHRyYXBwZXIoeDExRGlzcGxheSwgWEVycm9yVHJhcHBlcjo6UG9saWN5OjpXYXJuLCB7IEJhZERy
YXdhYmxlIH0pOworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IGVnbENyZWF0ZVBpeG1hcFN1cmZh
Y2UoZGlzcGxheSwgY29uZmlnLCByZWludGVycHJldF9jYXN0PEVHTE5hdGl2ZVBpeG1hcFR5cGU+
KHBpeG1hcC5nZXQoKSksIDApOworICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7
CisgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29u
dGV4dEVHTD4obmV3IEdMQ29udGV4dEVHTChwbGF0Zm9ybURpc3BsYXksIGNvbnRleHQsIHN1cmZh
Y2UsIFdURk1vdmUocGl4bWFwKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBVU0UoRUdMKSAmJiBQTEFURk9STShYMTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwCmluZGV4IGU3MWM0ZjIu
LjljMmVkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ds
eC9HTENvbnRleHRHTFguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dseC9HTENvbnRleHRHTFguY3BwCkBAIC01MiwxMSArNTIsMTEgQEAgc3RhdGljIGJvb2wgaGFz
U0dJU3dhcENvbnRyb2xFeHRlbnNpb24oRGlzcGxheSogZGlzcGxheSkKICAgICByZXR1cm4gISFn
bFhTd2FwSW50ZXJ2YWxTR0k7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdM
Q29udGV4dEdMWDo6Y3JlYXRlV2luZG93Q29udGV4dChYSUQgd2luZG93LCBQbGF0Zm9ybURpc3Bs
YXkmIHBsYXRmb3JtRGlzcGxheSwgR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3N0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlV2luZG93Q29udGV4dChH
TE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3JtRGlzcGxh
eSwgR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKIHsKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0g
ZG93bmNhc3Q8UGxhdGZvcm1EaXNwbGF5WDExPihwbGF0Zm9ybURpc3BsYXkpLm5hdGl2ZSgpOwog
ICAgIFhXaW5kb3dBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7Ci0gICAgaWYgKCFYR2V0V2luZG93QXR0
cmlidXRlcyhkaXNwbGF5LCB3aW5kb3csICZhdHRyaWJ1dGVzKSkKKyAgICBpZiAoIVhHZXRXaW5k
b3dBdHRyaWJ1dGVzKGRpc3BsYXksIHN0YXRpY19jYXN0PFdpbmRvdz4od2luZG93KSwgJmF0dHJp
YnV0ZXMpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFhWaXN1YWxJbmZvIHZpc3Vh
bEluZm87CkBAIC0xMzUsNyArMTM1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4g
R0xDb250ZXh0R0xYOjpjcmVhdGVQaXhtYXBDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYKICAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4obmV3IEdMQ29udGV4dEdMWChwbGF0
Zm9ybURpc3BsYXksIFdURk1vdmUoY29udGV4dCksIFdURk1vdmUocGl4bWFwKSwgV1RGTW92ZShn
bHhQaXhtYXApKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4
dEdMWDo6Y3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBQbGF0Zm9ybURpc3BsYXkmIHBsYXRmb3Jt
RGlzcGxheSkKK3N0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3Jl
YXRlQ29udGV4dChHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBQbGF0Zm9ybURpc3BsYXkmIHBs
YXRmb3JtRGlzcGxheSkKIHsKICAgICBHTFhDb250ZXh0IGdseFNoYXJpbmdDb250ZXh0ID0gcGxh
dGZvcm1EaXNwbGF5LnNoYXJpbmdHTENvbnRleHQoKSA/IHN0YXRpY19jYXN0PEdMQ29udGV4dEdM
WCo+KHBsYXRmb3JtRGlzcGxheS5zaGFyaW5nR0xDb250ZXh0KCkpLT5tX2NvbnRleHQuZ2V0KCkg
OiBudWxscHRyOwogICAgIGF1dG8gY29udGV4dCA9IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRl
eHQod2luZG93LCBwbGF0Zm9ybURpc3BsYXksIGdseFNoYXJpbmdDb250ZXh0KSA6IG51bGxwdHI7
CkBAIC0xNTUsMTEgKzE1NSwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENv
bnRleHRHTFg6OmNyZWF0ZVNoYXJpbmdDb250ZXh0KFBsYXRmb3JtRGlzcGxheQogICAgIHJldHVy
biBjb250ZXh0OwogfQogCi1HTENvbnRleHRHTFg6OkdMQ29udGV4dEdMWChQbGF0Zm9ybURpc3Bs
YXkmIGRpc3BsYXksIFhVbmlxdWVHTFhDb250ZXh0JiYgY29udGV4dCwgWElEIHdpbmRvdykKK0dM
Q29udGV4dEdMWDo6R0xDb250ZXh0R0xYKFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSwgWFVuaXF1
ZUdMWENvbnRleHQmJiBjb250ZXh0LCBHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KQogICAgIDog
R0xDb250ZXh0KGRpc3BsYXkpCiAgICAgLCBtX3gxMURpc3BsYXkoZG93bmNhc3Q8UGxhdGZvcm1E
aXNwbGF5WDExPihtX2Rpc3BsYXkpLm5hdGl2ZSgpKQogICAgICwgbV9jb250ZXh0KFdURk1vdmUo
Y29udGV4dCkpCi0gICAgLCBtX3dpbmRvdyh3aW5kb3cpCisgICAgLCBtX3dpbmRvdyhzdGF0aWNf
Y2FzdDxXaW5kb3c+KHdpbmRvdykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguaAppbmRleCBiZTNjMjNiLi5jYTI0MDI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250
ZXh0R0xYLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29u
dGV4dEdMWC5oCkBAIC0xNyw4ICsxNyw3IEBACiAgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVT
QQogICovCiAKLSNpZm5kZWYgR0xDb250ZXh0R0xYX2gKLSNkZWZpbmUgR0xDb250ZXh0R0xYX2gK
KyNwcmFnbWEgb25jZQogCiAjaWYgVVNFKEdMWCkKIApAQCAtMjcsNyArMjYsNyBAQAogI2luY2x1
ZGUgIlhVbmlxdWVSZXNvdXJjZS5oIgogCiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0x1Ynl0ZTsK
LXR5cGVkZWYgdW5zaWduZWQgbG9uZyBYSUQ7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgV2luZG93
OwogdHlwZWRlZiB2b2lkKiBDb250ZXh0S2V5VHlwZTsKIHR5cGVkZWYgc3RydWN0IF9YRGlzcGxh
eSBEaXNwbGF5OwogCkBAIC0zNiwxMSArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgR0xDb250ZXh0R0xYIGZpbmFsIDogcHVibGljIEdMQ29udGV4dCB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoR0xDb250ZXh0R0xYKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRlQ29udGV4dChYSUQgd2luZG93LCBQbGF0Zm9ybURp
c3BsYXkmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRl
Q29udGV4dChHTE5hdGl2ZVdpbmRvd1R5cGUsIFBsYXRmb3JtRGlzcGxheSYpOwogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBjcmVhdGVTaGFyaW5nQ29udGV4dChQbGF0
Zm9ybURpc3BsYXkmKTsKIAogICAgIHZpcnR1YWwgfkdMQ29udGV4dEdMWCgpOwogCitwcml2YXRl
OgogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzd2Fw
QnVmZmVycygpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FpdE5hdGl2ZSgpIG92ZXJyaWRlOwpAQCAt
NTQsMTggKzU0LDE3IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBs
YXRmb3JtQ29udGV4dCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKLXByaXZhdGU6Ci0gICAgR0xDb250
ZXh0R0xYKFBsYXRmb3JtRGlzcGxheSYsIFhVbmlxdWVHTFhDb250ZXh0JiYsIFhJRCk7CisgICAg
R0xDb250ZXh0R0xYKFBsYXRmb3JtRGlzcGxheSYsIFhVbmlxdWVHTFhDb250ZXh0JiYsIEdMTmF0
aXZlV2luZG93VHlwZSk7CiAgICAgR0xDb250ZXh0R0xYKFBsYXRmb3JtRGlzcGxheSYsIFhVbmlx
dWVHTFhDb250ZXh0JiYsIFhVbmlxdWVHTFhQYnVmZmVyJiYpOwogICAgIEdMQ29udGV4dEdMWChQ
bGF0Zm9ybURpc3BsYXkmLCBYVW5pcXVlR0xYQ29udGV4dCYmLCBYVW5pcXVlUGl4bWFwJiYsIFhV
bmlxdWVHTFhQaXhtYXAmJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEdMWD4gY3JlYXRlV2luZG93Q29udGV4dChYSUQgd2luZG93LCBQbGF0Zm9ybURpc3BsYXkmLCBH
TFhDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0gbnVsbHB0cik7CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZVdpbmRvd0NvbnRleHQoR0xOYXRpdmVXaW5kb3dU
eXBlLCBQbGF0Zm9ybURpc3BsYXkmLCBHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0ID0gbnVsbHB0
cik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IGNyZWF0ZVBidWZm
ZXJDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYsIEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQgPSBu
dWxscHRyKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gY3JlYXRl
UGl4bWFwQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmLCBHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0
ID0gbnVsbHB0cik7CiAKICAgICBEaXNwbGF5KiBtX3gxMURpc3BsYXkgeyBudWxscHRyIH07CiAg
ICAgWFVuaXF1ZUdMWENvbnRleHQgbV9jb250ZXh0OwotICAgIFhJRCBtX3dpbmRvdyB7IDAgfTsK
KyAgICBXaW5kb3cgbV93aW5kb3cgeyAwIH07CiAgICAgWFVuaXF1ZUdMWFBidWZmZXIgbV9wYnVm
ZmVyOwogICAgIFhVbmlxdWVQaXhtYXAgbV9waXhtYXA7CiAgICAgWFVuaXF1ZUdMWFBpeG1hcCBt
X2dseFBpeG1hcDsKQEAgLTc2LDQgKzc1LDMgQEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIFVTRShH
TFgpCiAKLSNlbmRpZiAvLyBHTENvbnRleHRHTFhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvUGxhdGZvcm1EaXNwbGF5
V2F5bGFuZC5jcHAKaW5kZXggNDc5MjRhNy4uNmM1MDA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3Jt
RGlzcGxheVdheWxhbmQuY3BwCkBAIC0zMCw3ICszMCwxMCBAQAogCiAjaW5jbHVkZSAiR0xDb250
ZXh0RUdMLmgiCiAjaW5jbHVkZSA8Y3N0cmluZz4KKy8vIFRoZXNlIGluY2x1ZGVzIG5lZWQgdG8g
YmUgaW4gdGhpcyBvcmRlciBiZWNhdXNlIHdheWxhbmQtZWdsLmggZGVmaW5lcyBXTF9FR0xfUExB
VEZPUk0KKy8vIGFuZCBlZ2wuaCBjaGVja3MgdGhhdCB0byBkZWNpZGUgd2hldGhlciBpdCdzIFdh
eWxhbmQgcGxhdGZvcm0uCiAjaW5jbHVkZSA8d2F5bGFuZC1lZ2wuaD4KKyNpbmNsdWRlIDxFR0wv
ZWdsLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRm
b3JtRGlzcGxheVgxMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEv
UGxhdGZvcm1EaXNwbGF5WDExLmNwcAppbmRleCBjNzA1OTk3Li4xYWI4NTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDEx
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy94MTEvUGxhdGZvcm1E
aXNwbGF5WDExLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtRGlzcGxheVgxMS5oIgogCisjaW5jbHVkZSAiR0xDb250ZXh0LmgiCisK
ICNpZiBQTEFURk9STShYMTEpCiAjaW5jbHVkZSA8WDExL1hsaWIuaD4KICNpbmNsdWRlIDxYMTEv
ZXh0ZW5zaW9ucy9YY29tcG9zaXRlLmg+CkBAIC0zNSwxNCArMzcsOCBAQAogCiAjaWYgVVNFKEVH
TCkKICNpbmNsdWRlIDxFR0wvZWdsLmg+Ci0jaW5jbHVkZSA8RUdML2VnbHBsYXRmb3JtLmg+CiAj
ZW5kaWYKIAotLy8gRklYTUU6IHRoaXMgbmVlZHMgdG8gYmUgaGVyZSwgYWZ0ZXIgZWdscGxhdGZv
cm0uaCwgdG8gYXZvaWQgRUdMTmF0aXZlRGlzcGxheVR5cGUgdG8gYmUgZGVmaW5lZCBhcyB3bF9k
aXNwbGF5LgotLy8gU2luY2Ugd2Ugc3VwcG9ydCBXYXlsYW5kIGFuZCBYMTEgdG8gYmUgYnVpbHQg
YXQgdGhlIHNhbWUgdGltZSwgYnV0IGVnbHBsYXRmb3JtLmggZGVmaW5lcyBhcmUgZGVjaWRlZCBh
dCBjb21waWxlIHRpbWUKLS8vIHdlIG5lZWQgdG8gZW5zdXJlIHdlIG9ubHkgaW5jbHVkZSBlZ2xw
bGF0Zm9ybS5oIGZyb20gWDExIG9yIFdheWxhbmQgc3BlY2lmaWMgZmlsZXMuCi0jaW5jbHVkZSAi
R0xDb250ZXh0LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGxhdGZvcm1EaXNwbGF5WDEx
OjpQbGF0Zm9ybURpc3BsYXlYMTEoKQo=
</data>
<flag name="review"
          id="315276"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>