Re: [BUG] IMAP hibernation fails on FreeBSD 15.x with "Invalid peer_dev_major value"
Jordan Ostrev via dovecot <[email protected]> Fri, 31 Jul 2026 20:44:16 +0300
| Newsgroups | gmane.mail.imap.dovecot |
|---|---|
| Message-ID | <[email protected]> |
--===============9086490527502969248== Content-Type: multipart/alternative; boundary="Apple-Mail=_96BE7FDC-D129-4ACD-BE4B-7EA4AD9D3199" --Apple-Mail=_96BE7FDC-D129-4ACD-BE4B-7EA4AD9D3199 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Hi Aki, Timo, Checking in on the FreeBSD 15 imap-hibernate 64-bit IPC fix below. Have you had any time to review or test the patch on your end? Happy to = refine the changes or format them as needed for upstream merge. Thanks, Jordan > On 25 Jun 2026, at 19:34, Aki Tuomi <[email protected]> = wrote: >=20 > Did you also test that incoming mail, or changes to SELECTed mailboxes = is noticed while hibernated? > =20 > Aki > =20 >> On 25/06/2026 18:34 EEST Jordan Ostrev via dovecot = <[email protected] <mailto:[email protected]>> wrote: >> =20 >> =20 >> Hi Timo, >> =20 >> I am running Dovecot 2.4.4 under FreeBSD 15.x, and I noticed that the = IMAP hibernation feature fails to work natively on this platform. >> =20 >> The Problem >> =20 >> Under FreeBSD, running fstat() on a network socket returns NODEV = (UINT64_MAX or 18446744073709551615) for both major()and minor() device = numbers. >> =20 >> When imap-hibernate tries to serialize these values, they are printed = as 64-bit unsigned integers. However, Dovecot's internal parser in = imap-master-client.c uses standard 32-bit integers (unsigned int) and = str_to_uint(). This causes an integer overflow, triggering the following = error during hibernation: Failed to parse client input: Invalid = peer_dev_major value: 18446744073709551615 >> =20 >> The Solution >> =20 >> I've created a patch for src/imap/imap-master-client.c that scales = the parser variables to uint64_t and switches the parsing function to = str_to_uint64(). Additionally, it updates the verification assertion to = prevent BUG crashes due to the expected dev_tbehavior of virtual network = sockets under FreeBSD. >> =20 >> Here is the combined patch that fixes the issue completely: >> =20 >> =D0=A4=D1=80=D0=B0=D0=B3=D0=BC=D0=B5=D0=BD=D1=82 =D0=BE=D1=82 =D0=BA=D0= =BE=D0=B4 >> =20 >> --- src/imap/imap-master-client.c.orig 2026-05-12 10:48:57 UTC >> +++ src/imap/imap-master-client.c >> @@ -75,7 +75,7 @@ imap_master_client_parse_input(const char *const = *args >> const char **error_r) >> { >> const char *key, *value; >> - unsigned int peer_dev_major =3D 0, peer_dev_minor =3D 0; >> + uint64_t peer_dev_major =3D 0, peer_dev_minor =3D 0; >> =20 >> i_zero(input_r); >> i_zero(stats_r); >> @@ -128,13 +128,13 @@ imap_master_client_parse_input(const char = *const *args >> return -1; >> } >> } else if (strcmp(key, "peer_dev_major") =3D=3D 0) { >> - if (str_to_uint(value, &peer_dev_major) < 0) { >> + if (str_to_uint64(value, &peer_dev_major) < 0) { >> *error_r =3D t_strdup_printf( >> "Invalid peer_dev_major value: %s", value); >> return -1; >> } >> } else if (strcmp(key, "peer_dev_minor") =3D=3D 0) { >> - if (str_to_uint(value, &peer_dev_minor) < 0) { >> + if (str_to_uint64(value, &peer_dev_minor) < 0) { >> *error_r =3D t_strdup_printf( >> "Invalid peer_dev_minor value: %s", value); >> return -1; >> @@ -265,7 +265,7 @@ imap_master_client_parse_input(const char *const = *args >> } >> if (peer_dev_major !=3D 0 || peer_dev_minor !=3D 0) { >> master_input_r->peer_dev =3D >> - makedev(peer_dev_major, peer_dev_minor); >> + makedev((unsigned long)peer_dev_major, (unsigned = long)peer_dev_minor); >> } >> return 0; >> } >> @@ -410,7 +410,8 @@ static int imap_master_client_verify(const struct = imap >> return -1; >> } >> if (peer_st.st_ino !=3D master_input->peer_ino || >> - !CMP_DEV_T(peer_st.st_dev, master_input->peer_dev)) { >> + (!CMP_DEV_T(peer_st.st_dev, master_input->peer_dev) && >> + major(peer_st.st_dev) !=3D (unsigned long)-1)) { >> *error_r =3D t_strdup_printf( >> "BUG: Expected peer device=3D%lu,%lu inode=3D%s doesn't match " >> "client fd's actual device=3D%lu,%lu inode=3D%s", >> Result >> =20 >> With this patch applied, hibernation works flawlessly under FreeBSD: >> =20 >> # doveadm who >> username # service (pids) (ips) >> [email protected] <mailto:[email protected]> 1 imap (26000) = (46.10.221.52) >> [email protected] <mailto:[email protected]> 2 imap-hibernate = (26260) (46.10.221.52) >> No error messages are logged by dovecot when it hibernates and = restores clients. I hope this can be integrated into the upstream code. >> =20 >> Best regards, >> =20 >> Jordan >> =20 >> =20 >> =20 >> =20 >>> On 25 Jun 2026, at 15:50, Jordan Ostrev <[email protected] = <mailto:[email protected]>> wrote: >>> =20 >>> Hi Timo, >>> i=E2=80=99m not programmer at all but here is my understanding of = the problem: >>> In src/imap/imap-client-hibernate.c, the code serializes = peer_dev_major and peer_dev_minor using major() and minor() macros: >>> =20 >>> str_printfa(cmd, = "\tpeer_dev_major=3D%lu\tpeer_dev_minor=3D%lu\tpeer_ino=3D%llu", >>> (unsigned long)major(peer_st.st_dev), >>> (unsigned long)minor(peer_st.st_dev), >>> (unsigned long long)peer_st.st_ino); >>> =20 >>> On FreeBSD, major() and minor() can return UINT64_MAX = (18446744073709551615) for file descriptors that are not block/character = devices (such as sockets on tmpfs/devfs). This value exceeds UINT_MAX = and cannot be parsed by str_to_uint() in imap-master-client.c, causing = hibernation to fail. >>> =20 >>> =20 >>>> On 25 Jun 2026, at 14:37, Jordan Ostrev <[email protected] = <mailto:[email protected]>> wrote: >>>> =20 >>>> Hi Timo, >>>> =20 >>>> I=E2=80=99ve made freebsd port patch which looks like that: >>>> =20 >>>> # cat files/patch-configure.ac >>>> --- configure.ac.orig 2026-06-25 11:03:42 UTC >>>> +++ configure.ac >>>> @@ -363,7 +363,7 @@ AS_CASE( >>>> DOVECOT_IOLOOP >>>> DOVECOT_NOTIFY >>>> AS_CASE( >>>> - ["$notify"], >>>> + ["$have_notify"], >>>> [none], [BUILD_IMAP_HIBERNATE=3D0], >>>> [kqueue], [BUILD_IMAP_HIBERNATE=3D0], >>>> [BUILD_IMAP_HIBERNATE=3D1]) >>>> =20 >>>> I=E2=80=99m simulating the situation with telnet: >>>> c idle >>>> + idling >>>> * 4228 EXPUNGE >>>> * 0 RECENT >>>> * OK Still here >>>> * OK Still here >>>> * 4228 EXISTS >>>> * 1 RECENT >>>> * 4228 EXPUNGE >>>> * 0 RECENT >>>> * 4228 EXISTS >>>> * 1 RECENT >>>> * 4228 EXPUNGE >>>> * 0 RECENT >>>> * OK Still here >>>> * OK Still here >>>> * OK Still here >>>> * OK Still here >>>> * 4228 EXISTS >>>> * 1 RECENT >>>> * 4228 EXPUNGE >>>> * 0 RECENT >>>> * OK Still here >>>> * OK Still here >>>> d idle >>>> c BAD Idle completed. >>>> + idling >>>> * OK Still here >>>> * 4228 EXISTS >>>> * 1 RECENT >>>> * 4228 EXPUNGE >>>> * 0 RECENT >>>> * OK Still here >>>> * 4228 EXISTS >>>> * 4227 FETCH (FLAGS (\Seen $NotJunk NotJunk)) >>>> * 4228 EXPUNGE >>>> * OK Still here >>>> =20 >>>> =20 >>>> in the log I see following: >>>> =20 >>>> Jun 25 14:21:17 classic dovecot[29292]: imap-hibernate: Error: conn = unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid = peer_dev_major value: 18446744073709551615 >>>> Jun 25 14:21:17 classic dovecot[29292]: imap([email protected] = <mailto:[email protected]>)<29454><CLP/EhJVqIguCt00>: Error: Couldn't = hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: = Failed to parse client input: Invalid peer_dev_major value: = 18446744073709551615 >>>> Jun 25 14:21:17 classic dovecot[29292]: imap-hibernate: Error: conn = unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid = peer_dev_major value: 18446744073709551615 >>>> Jun 25 14:21:17 classic dovecot[29292]: imap([email protected] = <mailto:[email protected]>)<30943><EJZELRJVp5QuCt00>: Error: Couldn't = hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: = Failed to parse client input: Invalid peer_dev_major value: = 18446744073709551615 >>>> Jun 25 14:26:03 classic dovecot[29292]: imap-hibernate: Error: conn = unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid = peer_dev_major value: 18446744073709551615 >>>> Jun 25 14:26:03 classic dovecot[29292]: imap([email protected] = <mailto:[email protected]>)<30943><EJZELRJVp5QuCt00>: Error: Couldn't = hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: = Failed to parse client input: Invalid peer_dev_major value: = 18446744073709551615 >>>> Jun 25 14:26:03 classic dovecot[29292]: imap-hibernate: Error: conn = unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid = peer_dev_major value: 18446744073709551615 >>>> Jun 25 14:26:03 classic dovecot[29292]: imap([email protected] = <mailto:[email protected]>)<29454><CLP/EhJVqIguCt00>: Error: Couldn't = hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: = Failed to parse client input: Invalid peer_dev_major value: = 18446744073709551615 >>>> Jun 25 14:29:28 classic dovecot[29292]: imap-hibernate: Error: conn = unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid = peer_dev_major value: 18446744073709551615 >>>> Jun 25 14:29:28 classic dovecot[29292]: imap([email protected] = <mailto:[email protected]>)<29454><CLP/EhJVqIguCt00>: Error: Couldn't = hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: = Failed to parse client input: Invalid peer_dev_major value: = 18446744073709551615 >>>> Jun 25 14:33:36 classic dovecot[29292]: imap-hibernate: Error: conn = unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid = peer_dev_major value: 18446744073709551615 >>>> Jun 25 14:33:36 classic dovecot[29292]: imap([email protected] = <mailto:[email protected]>)<33114><cX5QWRJVrZguCt00>: Error: Couldn't = hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: = Failed to parse client input: Invalid peer_dev_major value: = 18446744073709551615 >>>> Jun 25 14:33:37 classic dovecot[29292]: imap-hibernate: Error: conn = unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid = peer_dev_major value: 18446744073709551615 >>>> Jun 25 14:33:37 classic dovecot[29292]: imap([email protected] = <mailto:[email protected]>)<33112><NlVOWRJVkbEuCt00>: Error: Couldn't = hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: = Failed to parse client input: Invalid peer_dev_major value: = 18446744073709551615 >>>> Jun 25 14:34:40 classic dovecot[29292]: imap-hibernate: Error: conn = unix:imap-hibernate (uid=3D125): Failed to parse client input: Invalid = peer_dev_major value: 18446744073709551615 >>>> Jun 25 14:34:40 classic dovecot[29292]: imap([email protected] = <mailto:[email protected]>)<33112><NlVOWRJVkbEuCt00>: Error: Couldn't = hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: = Failed to parse client input: Invalid peer_dev_major value: = 18446744073709551615 >>>> =20 >>>> =20 >>>> Here is my piece of my config: >>>> # dovecot -a | grep hibernate >>>> imap_hibernate_timeout =3D 1 mins >>>> service imap-hibernate { >>>> unix_listener imap-hibernate { >>>> =20 >>>> What we can do more? >>>> =20 >>>> KR, >>>> Jordan >>>> =20 >>>> =20 >>>>> On 25 Jun 2026, at 12:34, Timo Sirainen <[email protected] = <mailto:[email protected]>> wrote: >>>>> =20 >>>>> On 24. Jun 2026, at 21.34, Jordan Ostrev via dovecot = <[email protected] <mailto:[email protected]>> wrote: >>>>>> Hi, >>>>>> IMAP hibernation compiles and attempts to run on FreeBSD 15.x = (tested with >>>>>> Dovecot 2.4.4 and FreeBSD 15.1), but fails at runtime with: >>>>>> plain >>>>>> =20 >>>>>> imap-hibernate: Error: conn unix:imap-hibernate (uid=3D125): = Failed to parse client input: Invalid peer_dev_major value: = 18446744073709551615 >>>>>> =20 >>>>>> Jun 24 21:27:08 classic dovecot[36888]: imap-hibernate: Error: = conn unix:imap-hibernate (uid=3D125): Failed to parse client input: = Invalid peer_dev_major value: 18446744073709551615 >>>>>> Jun 24 21:27:08 classic dovecot[36888]: imap([email protected] = <mailto:[email protected]>)<37120><ExaV/gNVAdt/AAAB>: Error: Couldn't = hibernate imap client: /var/run/dovecot/imap-hibernate returned failure: = Failed to parse client input: Invalid peer_dev_major value: = 18446744073709551615 >>>>> .. >>>>>> 1. Disable hibernation at compile time for kqueue systems, or >>>>> It was already supposed to be done, but looks like there's a bug. = Can you verify if this works? : >>>>> =20 >>>>> diff --git a/configure.ac b/configure.ac >>>>> index 9beacaa299..04f9c8edd6 100644 >>>>> --- a/configure.ac >>>>> +++ b/configure.ac >>>>> @@ -363,7 +363,7 @@ DOVECOT_TYPEOF >>>>> DOVECOT_IOLOOP >>>>> DOVECOT_NOTIFY >>>>> AS_CASE( >>>>> - ["$notify"], >>>>> + ["$have_notify"], >>>>> [none], [BUILD_IMAP_HIBERNATE=3D0], >>>>> [kqueue], [BUILD_IMAP_HIBERNATE=3D0], >>>>> [BUILD_IMAP_HIBERNATE=3D1]) >> Hi Timo, >> =20 >> I am running Dovecot 2.4.4 under FreeBSD 15.x, and I noticed that the = IMAP >> hibernation feature fails to work natively on this platform. >> =20 >> The Problem >> =20 >> Under FreeBSD, running fstat() on a network socket >> returns NODEV (UINT64_MAX or 18446744073709551615) for >> both major()and minor() device numbers. >> =20 >> When imap-hibernate tries to serialize these values, they are printed = as >> 64-bit unsigned integers. However, Dovecot's internal parser >> in imap-master-client.c uses standard 32-bit integers (unsigned int) >> and str_to_uint(). This causes an integer overflow, triggering the >> following error during hibernation: Failed to parse client input: = Invalid >> peer_dev_major value: 18446744073709551615 >> =20 >> The Solution >> =20 >> I've created a patch for src/imap/imap-master-client.c that scales = the >> parser variables to uint64_t and switches the parsing function >> to str_to_uint64(). Additionally, it updates the verification = assertion to >> prevent BUG crashes due to the expected dev_tbehavior of virtual = network >> sockets under FreeBSD. >> =20 >> Here is the combined patch that fixes the issue completely: >> =20 >> Fragment ot kod >> =20 >> --- src/imap/imap-master-client.c.orig 2026-05-12 10:48:57 UTC >> +++ src/imap/imap-master-client.c >> @@ -75,7 +75,7 @@ imap_master_client_parse_input(const char *const = *args >> const char **error_r) >> { >> const char *key, *value; >> - unsigned int peer_dev_major =3D 0, peer_dev_minor =3D 0; >> + uint64_t peer_dev_major =3D 0, peer_dev_minor =3D 0; >> =20 >> i_zero(input_r); >> i_zero(stats_r); >> @@ -128,13 +128,13 @@ imap_master_client_parse_input(const char = *const *args >> return -1; >> } >> } else if (strcmp(key, "peer_dev_major") =3D=3D 0) { >> - if (str_to_uint(value, &peer_dev_major) < 0) { >> + if (str_to_uint64(value, &peer_dev_major) < 0) { >> *error_r =3D t_strdup_printf( >> "Invalid peer_dev_major value: %s", value); >> return -1; >> } >> } else if (strcmp(key, "peer_dev_minor") =3D=3D 0) { >> - if (str_to_uint(value, &peer_dev_minor) < 0) { >> + if (str_to_uint64(value, &peer_dev_minor) < 0) { >> *error_r =3D t_strdup_printf( >> "Invalid peer_dev_minor value: %s", value); >> return -1; >> @@ -265,7 +265,7 @@ imap_master_client_parse_input(const char *const = *args >> } >> if (peer_dev_major !=3D 0 || peer_dev_minor !=3D 0) { >> master_input_r->peer_dev =3D >> - makedev(peer_dev_major, peer_dev_minor); >> + makedev((unsigned long)peer_dev_major, (unsigned = long)peer_dev_minor); >> } >> return 0; >> } >> @@ -410,7 +410,8 @@ static int imap_master_client_verify(const struct = imap >> return -1; >> } >> if (peer_st.st_ino !=3D master_input->peer_ino || >> - !CMP_DEV_T(peer_st.st_dev, master_input->peer_dev)) { >> + (!CMP_DEV_T(peer_st.st_dev, master_input->peer_dev) && >> + major(peer_st.st_dev) !=3D (unsigned long)-1)) { >> *error_r =3D t_strdup_printf( >> "BUG: Expected peer device=3D%lu,%lu inode=3D%s doesn't match " >> "client fd's actual device=3D%lu,%lu inode=3D%s", >> =20 >> Result >> =20 >> With this patch applied, hibernation works flawlessly under FreeBSD: >> =20 >> # doveadm who >> username # service (pids) (ips) >> [email protected] <mailto:[email protected]> 1 imap (26000) = (46.10.221.52) >> [email protected] <mailto:[email protected]> 2 imap-hibernate = (26260) (46.10.221.52) >> =20 >> No error messages are logged by dovecot when it hibernates and = restores >> clients. I hope this can be integrated into the upstream code. >> =20 >> Best regards, >> =20 >> Jordan >> =20 >> On 25 Jun 2026, at 15:50, Jordan Ostrev <[email protected] = <mailto:[email protected]>> wrote: >> Hi Timo, >> i'm not programmer at all but here is my understanding of the = problem: >> =20 >> In src/imap/imap-client-hibernate.c, the code serializes = peer_dev_major and peer_dev_minor using major() and minor() macros: >> =20 >> str_printfa(cmd, = "\tpeer_dev_major=3D%lu\tpeer_dev_minor=3D%lu\tpeer_ino=3D%llu", >> (unsigned long)major(peer_st.st_dev), >> (unsigned long)minor(peer_st.st_dev), >> (unsigned long long)peer_st.st_ino); >> =20 >> On FreeBSD, major() and minor() can return UINT64_MAX = (18446744073709551615) for file descriptors that are not block/character = devices (such as sockets on tmpfs/devfs). This value exceeds UINT_MAX = and cannot be parsed by str_to_uint() in imap-master-client.c, causing = hibernation to fail. >> =20 >> On 25 Jun 2026, at 14:37, Jordan Ostrev <[email protected] = <mailto:[email protected]>> wrote: >> Hi Timo, >> =20 >> I've made freebsd port patch which looks like that: >> =20 >> # cat files/patch-configure.ac >> --- configure.ac.orig 2026-06-25 11:03:42 UTC >> +++ configure.ac >> @@ -363,7 +363,7 @@ AS_CASE( >> DOVECOT_IOLOOP >> DOVECOT_NOTIFY >> AS_CASE( >> - ["$notify"], >> + ["$have_notify"], >> [none], [BUILD_IMAP_HIBERNATE=3D0], >> [kqueue], [BUILD_IMAP_HIBERNATE=3D0], >> [BUILD_IMAP_HIBERNATE=3D1]) >> =20 >> I'm simulating the situation with telnet: >> c idle >> + idling >> * 4228 EXPUNGE >> * 0 RECENT >> * OK Still here >> * OK Still here >> * 4228 EXISTS >> * 1 RECENT >> * 4228 EXPUNGE >> * 0 RECENT >> * 4228 EXISTS >> * 1 RECENT >> * 4228 EXPUNGE >> * 0 RECENT >> * OK Still here >> * OK Still here >> * OK Still here >> * OK Still here >> * 4228 EXISTS >> * 1 RECENT >> * 4228 EXPUNGE >> * 0 RECENT >> * OK Still here >> * OK Still here >> d idle >> c BAD Idle completed. >> + idling >> * OK Still here >> * 4228 EXISTS >> * 1 RECENT >> * 4228 EXPUNGE >> * 0 RECENT >> * OK Still here >> * 4228 EXISTS >> * 4227 FETCH (FLAGS (\Seen $NotJunk NotJunk)) >> * 4228 EXPUNGE >> * OK Still here >> =20 >> in the log I see following: >> =20 >> Jun 25 14:21:17 classic dovecot[29292]: imap-hibernate: Error: conn >> unix:imap-hibernate (uid=3D125): Failed to parse client input: = Invalid >> peer_dev_major value: 18446744073709551615 >> Jun 25 14:21:17 classic dovecot[29292]: >> imap([email protected] = <mailto:[email protected]>)<29454><CLP/EhJVqIguCt00>: Error: Couldn't >> hibernate imap client: /var/run/dovecot/imap-hibernate returned >> failure: Failed to parse client input: Invalid peer_dev_major value: >> 18446744073709551615 >> Jun 25 14:21:17 classic dovecot[29292]: imap-hibernate: Error: conn >> unix:imap-hibernate (uid=3D125): Failed to parse client input: = Invalid >> peer_dev_major value: 18446744073709551615 >> Jun 25 14:21:17 classic dovecot[29292]: >> imap([email protected] = <mailto:[email protected]>)<30943><EJZELRJVp5QuCt00>: Error: Couldn't >> hibernate imap client: /var/run/dovecot/imap-hibernate returned >> failure: Failed to parse client input: Invalid peer_dev_major value: >> 18446744073709551615 >> Jun 25 14:26:03 classic dovecot[29292]: imap-hibernate: Error: conn >> unix:imap-hibernate (uid=3D125): Failed to parse client input: = Invalid >> peer_dev_major value: 18446744073709551615 >> Jun 25 14:26:03 classic dovecot[29292]: >> imap([email protected] = <mailto:[email protected]>)<30943><EJZELRJVp5QuCt00>: Error: Couldn't >> hibernate imap client: /var/run/dovecot/imap-hibernate returned >> failure: Failed to parse client input: Invalid peer_dev_major value: >> 18446744073709551615 >> Jun 25 14:26:03 classic dovecot[29292]: imap-hibernate: Error: conn >> unix:imap-hibernate (uid=3D125): Failed to parse client input: = Invalid >> peer_dev_major value: 18446744073709551615 >> Jun 25 14:26:03 classic dovecot[29292]: >> imap([email protected] = <mailto:[email protected]>)<29454><CLP/EhJVqIguCt00>: Error: Couldn't >> hibernate imap client: /var/run/dovecot/imap-hibernate returned >> failure: Failed to parse client input: Invalid peer_dev_major value: >> 18446744073709551615 >> Jun 25 14:29:28 classic dovecot[29292]: imap-hibernate: Error: conn >> unix:imap-hibernate (uid=3D125): Failed to parse client input: = Invalid >> peer_dev_major value: 18446744073709551615 >> Jun 25 14:29:28 classic dovecot[29292]: >> imap([email protected] = <mailto:[email protected]>)<29454><CLP/EhJVqIguCt00>: Error: Couldn't >> hibernate imap client: /var/run/dovecot/imap-hibernate returned >> failure: Failed to parse client input: Invalid peer_dev_major value: >> 18446744073709551615 >> Jun 25 14:33:36 classic dovecot[29292]: imap-hibernate: Error: conn >> unix:imap-hibernate (uid=3D125): Failed to parse client input: = Invalid >> peer_dev_major value: 18446744073709551615 >> Jun 25 14:33:36 classic dovecot[29292]: >> imap([email protected] = <mailto:[email protected]>)<33114><cX5QWRJVrZguCt00>: Error: Couldn't >> hibernate imap client: /var/run/dovecot/imap-hibernate returned >> failure: Failed to parse client input: Invalid peer_dev_major value: >> 18446744073709551615 >> Jun 25 14:33:37 classic dovecot[29292]: imap-hibernate: Error: conn >> unix:imap-hibernate (uid=3D125): Failed to parse client input: = Invalid >> peer_dev_major value: 18446744073709551615 >> Jun 25 14:33:37 classic dovecot[29292]: >> imap([email protected] = <mailto:[email protected]>)<33112><NlVOWRJVkbEuCt00>: Error: Couldn't >> hibernate imap client: /var/run/dovecot/imap-hibernate returned >> failure: Failed to parse client input: Invalid peer_dev_major value: >> 18446744073709551615 >> Jun 25 14:34:40 classic dovecot[29292]: imap-hibernate: Error: conn >> unix:imap-hibernate (uid=3D125): Failed to parse client input: = Invalid >> peer_dev_major value: 18446744073709551615 >> Jun 25 14:34:40 classic dovecot[29292]: >> imap([email protected] = <mailto:[email protected]>)<33112><NlVOWRJVkbEuCt00>: Error: Couldn't >> hibernate imap client: /var/run/dovecot/imap-hibernate returned >> failure: Failed to parse client input: Invalid peer_dev_major value: >> 18446744073709551615 >> =20 >> Here is my piece of my config: >> # dovecot -a | grep hibernate >> imap_hibernate_timeout =3D 1 mins >> service imap-hibernate { >> unix_listener imap-hibernate { >> =20 >> What we can do more? >> =20 >> KR, >> Jordan >> =20 >> On 25 Jun 2026, at 12:34, Timo Sirainen <[email protected] = <mailto:[email protected]>> wrote: >> =20 >> On 24. Jun 2026, at 21.34, Jordan Ostrev via dovecot >> <[email protected] <mailto:[email protected]>> wrote: >> =20 >> Hi, >> IMAP hibernation compiles and attempts to run on FreeBSD 15.x >> (tested with >> Dovecot 2.4.4 and FreeBSD 15.1), but fails at runtime with: >> plain >> =20 >> imap-hibernate: Error: conn unix:imap-hibernate (uid=3D125): Failed >> to parse client input: Invalid peer_dev_major value: >> 18446744073709551615 >> =20 >> Jun 24 21:27:08 classic dovecot[36888]: imap-hibernate: Error: >> conn unix:imap-hibernate (uid=3D125): Failed to parse client input: >> Invalid peer_dev_major value: 18446744073709551615 >> Jun 24 21:27:08 classic dovecot[36888]: >> imap([email protected] = <mailto:[email protected]>)<37120><ExaV/gNVAdt/AAAB>: Error: >> Couldn't hibernate imap client: /var/run/dovecot/imap-hibernate >> returned failure: Failed to parse client input: Invalid >> peer_dev_major value: 18446744073709551615 >> =20 >> .. >> =20 >> 1. Disable hibernation at compile time for kqueue systems, or >> =20 >> It was already supposed to be done, but looks like there's a bug. >> Can you verify if this works? : >> =20 >> diff --git a/configure.ac b/configure.ac >> index 9beacaa299..04f9c8edd6 100644 >> --- a/configure.ac >> +++ b/configure.ac >> @@ -363,7 +363,7 @@ DOVECOT_TYPEOF >> DOVECOT_IOLOOP >> DOVECOT_NOTIFY >> AS_CASE( >> - ["$notify"], >> + ["$have_notify"], >> [none], [BUILD_IMAP_HIBERNATE=3D0], >> [kqueue], [BUILD_IMAP_HIBERNATE=3D0], >> [BUILD_IMAP_HIBERNATE=3D1]) >> _______________________________________________ >> dovecot mailing list -- [email protected] = <mailto:[email protected]> >> To unsubscribe send an email to [email protected] = <mailto:[email protected]> --Apple-Mail=_96BE7FDC-D129-4ACD-BE4B-7EA4AD9D3199 Content-Transfer-Encoding: base64 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" ICAgSGkgQWtpLCBUaW1vLAogICBDaGVja2luZyBpbiBvbiB0aGUgRnJlZUJTRCAxNSBpbWFwLWhp YmVybmF0ZSA2NC1iaXQgSVBDIGZpeCBiZWxvdy4KICAgSGF2ZSB5b3UgaGFkIGFueSB0aW1lIHRv IHJldmlldyBvciB0ZXN0IHRoZSBwYXRjaCBvbiB5b3VyIGVuZD8gSGFwcHkgdG8KICAgcmVmaW5l IHRoZSBjaGFuZ2VzIG9yIGZvcm1hdCB0aGVtIGFzIG5lZWRlZCBmb3IgdXBzdHJlYW0gbWVyZ2Uu CiAgIFRoYW5rcywKICAgSm9yZGFuCgogICAgIE9uIDI1IEp1biAyMDI2LCBhdCAxOTozNCwgQWtp IFR1b21pIDxha2kudHVvbWlAb3Blbi14Y2hhbmdlLmNvbT4gd3JvdGU6CiAgICAgRGlkIHlvdSBh bHNvIHRlc3QgdGhhdCBpbmNvbWluZyBtYWlsLCBvciBjaGFuZ2VzIHRvIFNFTEVDVGVkIG1haWxi b3hlcwogICAgIGlzIG5vdGljZWQgd2hpbGUgaGliZXJuYXRlZD8KCiAgICAgQWtpCgoKICAgICAg IE9uIDI1LzA2LzIwMjYgMTg6MzQgRUVTVCBKb3JkYW4gT3N0cmV2IHZpYSBkb3ZlY290CiAgICAg ICA8WzFdZG92ZWNvdEBkb3ZlY290Lm9yZz4gd3JvdGU6CgoKICAgICAgIEhpIFRpbW8sCgogICAg ICAgSSBhbSBydW5uaW5nIERvdmVjb3QgMi40LjQgdW5kZXIgRnJlZUJTRCAxNS54LCBhbmQgSSBu b3RpY2VkIHRoYXQgdGhlCiAgICAgICBJTUFQIGhpYmVybmF0aW9uIGZlYXR1cmUgZmFpbHMgdG8g d29yayBuYXRpdmVseSBvbiB0aGlzIHBsYXRmb3JtLgoKICAgICAgIFRoZSBQcm9ibGVtCgogICAg ICAgVW5kZXIgRnJlZUJTRCwgcnVubmluZyBmc3RhdCgpIG9uIGEgbmV0d29yayBzb2NrZXQgcmV0 dXJucyBOT0RFVgogICAgICAgKFVJTlQ2NF9NQVggb3IgMTg0NDY3NDQwNzM3MDk1NTE2MTUpIGZv ciBib3RoIG1ham9yKClhbmQgbWlub3IoKQogICAgICAgZGV2aWNlIG51bWJlcnMuCgogICAgICAg V2hlbiBpbWFwLWhpYmVybmF0ZSB0cmllcyB0byBzZXJpYWxpemUgdGhlc2UgdmFsdWVzLCB0aGV5 IGFyZSBwcmludGVkCiAgICAgICBhcyA2NC1iaXQgdW5zaWduZWQgaW50ZWdlcnMuIEhvd2V2ZXIs IERvdmVjb3QncyBpbnRlcm5hbCBwYXJzZXIgaW4KICAgICAgIGltYXAtbWFzdGVyLWNsaWVudC5j IHVzZXMgc3RhbmRhcmQgMzItYml0IGludGVnZXJzICh1bnNpZ25lZCBpbnQpIGFuZAogICAgICAg c3RyX3RvX3VpbnQoKS4gVGhpcyBjYXVzZXMgYW4gaW50ZWdlciBvdmVyZmxvdywgdHJpZ2dlcmlu ZyB0aGUKICAgICAgIGZvbGxvd2luZyBlcnJvciBkdXJpbmcgaGliZXJuYXRpb246IEZhaWxlZCB0 byBwYXJzZSBjbGllbnQgaW5wdXQ6CiAgICAgICBJbnZhbGlkIHBlZXJfZGV2X21ham9yIHZhbHVl OiAxODQ0Njc0NDA3MzcwOTU1MTYxNQoKICAgICAgIFRoZSBTb2x1dGlvbgoKICAgICAgIEkndmUg Y3JlYXRlZCBhIHBhdGNoIGZvciBzcmMvaW1hcC9pbWFwLW1hc3Rlci1jbGllbnQuYyB0aGF0IHNj YWxlcyB0aGUKICAgICAgIHBhcnNlciB2YXJpYWJsZXMgdG8gdWludDY0X3QgYW5kIHN3aXRjaGVz IHRoZSBwYXJzaW5nIGZ1bmN0aW9uIHRvCiAgICAgICBzdHJfdG9fdWludDY0KCkuIEFkZGl0aW9u YWxseSwgaXQgdXBkYXRlcyB0aGUgdmVyaWZpY2F0aW9uIGFzc2VydGlvbgogICAgICAgdG8gcHJl dmVudCBCVUcgY3Jhc2hlcyBkdWUgdG8gdGhlIGV4cGVjdGVkIGRldl90YmVoYXZpb3Igb2Ygdmly dHVhbAogICAgICAgbmV0d29yayBzb2NrZXRzIHVuZGVyIEZyZWVCU0QuCgogICAgICAgSGVyZSBp cyB0aGUgY29tYmluZWQgcGF0Y2ggdGhhdCBmaXhlcyB0aGUgaXNzdWUgY29tcGxldGVseToKCiAg ICAgICBGcmFnbWVudCBvdCBrb2QKCiAgICAgICAtLS0gc3JjL2ltYXAvaW1hcC1tYXN0ZXItY2xp ZW50LmMub3JpZyAyMDI2LTA1LTEyIDEwOjQ4OjU3IFVUQwogICAgICAgKysrIHNyYy9pbWFwL2lt YXAtbWFzdGVyLWNsaWVudC5jCiAgICAgICBAQCAtNzUsNyArNzUsNyBAQCBpbWFwX21hc3Rlcl9j bGllbnRfcGFyc2VfaW5wdXQoY29uc3QgY2hhciAqY29uc3QKICAgICAgICphcmdzCiAgICAgICBj b25zdCBjaGFyICoqZXJyb3JfcikKICAgICAgIHsKICAgICAgIGNvbnN0IGNoYXIgKmtleSwgKnZh bHVlOwogICAgICAgLSB1bnNpZ25lZCBpbnQgcGVlcl9kZXZfbWFqb3IgPSAwLCBwZWVyX2Rldl9t aW5vciA9IDA7CiAgICAgICArIHVpbnQ2NF90IHBlZXJfZGV2X21ham9yID0gMCwgcGVlcl9kZXZf bWlub3IgPSAwOwoKICAgICAgIGlfemVybyhpbnB1dF9yKTsKICAgICAgIGlfemVybyhzdGF0c19y KTsKICAgICAgIEBAIC0xMjgsMTMgKzEyOCwxMyBAQCBpbWFwX21hc3Rlcl9jbGllbnRfcGFyc2Vf aW5wdXQoY29uc3QgY2hhciAqY29uc3QKICAgICAgICphcmdzCiAgICAgICByZXR1cm4gLTE7CiAg ICAgICB9CiAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChrZXksICJwZWVyX2Rldl9tYWpvciIpID09 IDApIHsKICAgICAgIC0gaWYgKHN0cl90b191aW50KHZhbHVlLCAmcGVlcl9kZXZfbWFqb3IpIDwg MCkgewogICAgICAgKyBpZiAoc3RyX3RvX3VpbnQ2NCh2YWx1ZSwgJnBlZXJfZGV2X21ham9yKSA8 IDApIHsKICAgICAgICplcnJvcl9yID0gdF9zdHJkdXBfcHJpbnRmKAogICAgICAgIkludmFsaWQg cGVlcl9kZXZfbWFqb3IgdmFsdWU6ICVzIiwgdmFsdWUpOwogICAgICAgcmV0dXJuIC0xOwogICAg ICAgfQogICAgICAgfSBlbHNlIGlmIChzdHJjbXAoa2V5LCAicGVlcl9kZXZfbWlub3IiKSA9PSAw KSB7CiAgICAgICAtIGlmIChzdHJfdG9fdWludCh2YWx1ZSwgJnBlZXJfZGV2X21pbm9yKSA8IDAp IHsKICAgICAgICsgaWYgKHN0cl90b191aW50NjQodmFsdWUsICZwZWVyX2Rldl9taW5vcikgPCAw KSB7CiAgICAgICAqZXJyb3JfciA9IHRfc3RyZHVwX3ByaW50ZigKICAgICAgICJJbnZhbGlkIHBl ZXJfZGV2X21pbm9yIHZhbHVlOiAlcyIsIHZhbHVlKTsKICAgICAgIHJldHVybiAtMTsKICAgICAg IEBAIC0yNjUsNyArMjY1LDcgQEAgaW1hcF9tYXN0ZXJfY2xpZW50X3BhcnNlX2lucHV0KGNvbnN0 IGNoYXIgKmNvbnN0CiAgICAgICAqYXJncwogICAgICAgfQogICAgICAgaWYgKHBlZXJfZGV2X21h am9yICE9IDAgfHwgcGVlcl9kZXZfbWlub3IgIT0gMCkgewogICAgICAgbWFzdGVyX2lucHV0X3It PnBlZXJfZGV2ID0KICAgICAgIC0gbWFrZWRldihwZWVyX2Rldl9tYWpvciwgcGVlcl9kZXZfbWlu b3IpOwogICAgICAgKyBtYWtlZGV2KCh1bnNpZ25lZCBsb25nKXBlZXJfZGV2X21ham9yLCAodW5z aWduZWQKICAgICAgIGxvbmcpcGVlcl9kZXZfbWlub3IpOwogICAgICAgfQogICAgICAgcmV0dXJu IDA7CiAgICAgICB9CiAgICAgICBAQCAtNDEwLDcgKzQxMCw4IEBAIHN0YXRpYyBpbnQgaW1hcF9t YXN0ZXJfY2xpZW50X3ZlcmlmeShjb25zdCBzdHJ1Y3QKICAgICAgIGltYXAKICAgICAgIHJldHVy biAtMTsKICAgICAgIH0KICAgICAgIGlmIChwZWVyX3N0LnN0X2lubyAhPSBtYXN0ZXJfaW5wdXQt PnBlZXJfaW5vIHx8CiAgICAgICAtICFDTVBfREVWX1QocGVlcl9zdC5zdF9kZXYsIG1hc3Rlcl9p bnB1dC0+cGVlcl9kZXYpKSB7CiAgICAgICArICghQ01QX0RFVl9UKHBlZXJfc3Quc3RfZGV2LCBt YXN0ZXJfaW5wdXQtPnBlZXJfZGV2KSAmJgogICAgICAgKyBtYWpvcihwZWVyX3N0LnN0X2Rldikg IT0gKHVuc2lnbmVkIGxvbmcpLTEpKSB7CiAgICAgICAqZXJyb3JfciA9IHRfc3RyZHVwX3ByaW50 ZigKICAgICAgICJCVUc6IEV4cGVjdGVkIHBlZXIgZGV2aWNlPSVsdSwlbHUgaW5vZGU9JXMgZG9l c24ndCBtYXRjaCAiCiAgICAgICAiY2xpZW50IGZkJ3MgYWN0dWFsIGRldmljZT0lbHUsJWx1IGlu b2RlPSVzIiwKICAgICAgIFJlc3VsdAoKICAgICAgIFdpdGggdGhpcyBwYXRjaCBhcHBsaWVkLCBo aWJlcm5hdGlvbiB3b3JrcyBmbGF3bGVzc2x5IHVuZGVyIEZyZWVCU0Q6CgogICAgICAgIyBkb3Zl YWRtIHdobwogICAgICAgdXNlcm5hbWUgIyBzZXJ2aWNlIChwaWRzKSAoaXBzKQogICAgICAgWzJd am9yZGFuQG9zdHJlZmYuaW5mbyAxIGltYXAgKDI2MDAwKSAoNDYuMTAuMjIxLjUyKQogICAgICAg WzNdam9yZGFuQG9zdHJlZmYuaW5mbyAyIGltYXAtaGliZXJuYXRlICgyNjI2MCkgKDQ2LjEwLjIy MS41MikKICAgICAgIE5vIGVycm9yIG1lc3NhZ2VzIGFyZSBsb2dnZWQgYnkgZG92ZWNvdCB3aGVu IGl0IGhpYmVybmF0ZXMgYW5kCiAgICAgICByZXN0b3JlcyBjbGllbnRzLiBJIGhvcGUgdGhpcyBj YW4gYmUgaW50ZWdyYXRlZCBpbnRvIHRoZSB1cHN0cmVhbQogICAgICAgY29kZS4KCiAgICAgICBC ZXN0IHJlZ2FyZHMsCgogICAgICAgSm9yZGFuCgoKCgoKICAgICAgICAgT24gMjUgSnVuIDIwMjYs IGF0IDE1OjUwLCBKb3JkYW4gT3N0cmV2IDxbNF1qb3JkYW5Ab3N0cmVmZi5pbmZvPgogICAgICAg ICB3cm90ZToKCiAgICAgICAgIEhpIFRpbW8sCiAgICAgICAgIGknbSBub3QgcHJvZ3JhbW1lciBh dCBhbGwgYnV0IGhlcmUgaXMgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUKICAgICAgICAgcHJvYmxl bToKICAgICAgICAgSW4gc3JjL2ltYXAvaW1hcC1jbGllbnQtaGliZXJuYXRlLmMsIHRoZSBjb2Rl IHNlcmlhbGl6ZXMKICAgICAgICAgcGVlcl9kZXZfbWFqb3IgYW5kIHBlZXJfZGV2X21pbm9yIHVz aW5nIG1ham9yKCkgYW5kIG1pbm9yKCkgbWFjcm9zOgoKICAgICAgICAgc3RyX3ByaW50ZmEoY21k LAogICAgICAgICAiXHRwZWVyX2Rldl9tYWpvcj0lbHVcdHBlZXJfZGV2X21pbm9yPSVsdVx0cGVl cl9pbm89JWxsdSIsCiAgICAgICAgICh1bnNpZ25lZCBsb25nKW1ham9yKHBlZXJfc3Quc3RfZGV2 KSwKICAgICAgICAgKHVuc2lnbmVkIGxvbmcpbWlub3IocGVlcl9zdC5zdF9kZXYpLAogICAgICAg ICAodW5zaWduZWQgbG9uZyBsb25nKXBlZXJfc3Quc3RfaW5vKTsKCiAgICAgICAgIE9uIEZyZWVC U0QsIG1ham9yKCkgYW5kIG1pbm9yKCkgY2FuIHJldHVybiBVSU5UNjRfTUFYCiAgICAgICAgICgx ODQ0Njc0NDA3MzcwOTU1MTYxNSkgZm9yIGZpbGUgZGVzY3JpcHRvcnMgdGhhdCBhcmUgbm90CiAg ICAgICAgIGJsb2NrL2NoYXJhY3RlciBkZXZpY2VzIChzdWNoIGFzIHNvY2tldHMgb24gdG1wZnMv ZGV2ZnMpLiBUaGlzIHZhbHVlCiAgICAgICAgIGV4Y2VlZHMgVUlOVF9NQVggYW5kIGNhbm5vdCBi ZSBwYXJzZWQgYnkgc3RyX3RvX3VpbnQoKSBpbgogICAgICAgICBpbWFwLW1hc3Rlci1jbGllbnQu YywgY2F1c2luZyBoaWJlcm5hdGlvbiB0byBmYWlsLgoKCgogICAgICAgICAgIE9uIDI1IEp1biAy MDI2LCBhdCAxNDozNywgSm9yZGFuIE9zdHJldiA8WzVdam9yZGFuQG9zdHJlZmYuaW5mbz4KICAg ICAgICAgICB3cm90ZToKCiAgICAgICAgICAgSGkgVGltbywKCiAgICAgICAgICAgSSd2ZSBtYWRl IGZyZWVic2QgcG9ydCBwYXRjaCB3aGljaCBsb29rcyBsaWtlIHRoYXQ6CgogICAgICAgICAgICMg Y2F0IGZpbGVzL3BhdGNoLWNvbmZpZ3VyZS5hYwogICAgICAgICAgIC0tLSBjb25maWd1cmUuYWMu b3JpZyAyMDI2LTA2LTI1IDExOjAzOjQyIFVUQwogICAgICAgICAgICsrKyBjb25maWd1cmUuYWMK ICAgICAgICAgICBAQCAtMzYzLDcgKzM2Myw3IEBAIEFTX0NBU0UoCiAgICAgICAgICAgRE9WRUNP VF9JT0xPT1AKICAgICAgICAgICBET1ZFQ09UX05PVElGWQogICAgICAgICAgIEFTX0NBU0UoCiAg ICAgICAgICAgLSBbIiRub3RpZnkiXSwKICAgICAgICAgICArIFsiJGhhdmVfbm90aWZ5Il0sCiAg ICAgICAgICAgW25vbmVdLCBbQlVJTERfSU1BUF9ISUJFUk5BVEU9MF0sCiAgICAgICAgICAgW2tx dWV1ZV0sIFtCVUlMRF9JTUFQX0hJQkVSTkFURT0wXSwKICAgICAgICAgICBbQlVJTERfSU1BUF9I SUJFUk5BVEU9MV0pCgogICAgICAgICAgIEknbSBzaW11bGF0aW5nIHRoZSBzaXR1YXRpb24gd2l0 aCB0ZWxuZXQ6CiAgICAgICAgICAgYyBpZGxlCiAgICAgICAgICAgKyBpZGxpbmcKICAgICAgICAg ICAqIDQyMjggRVhQVU5HRQogICAgICAgICAgICogMCBSRUNFTlQKICAgICAgICAgICAqIE9LIFN0 aWxsIGhlcmUKICAgICAgICAgICAqIE9LIFN0aWxsIGhlcmUKICAgICAgICAgICAqIDQyMjggRVhJ U1RTCiAgICAgICAgICAgKiAxIFJFQ0VOVAogICAgICAgICAgICogNDIyOCBFWFBVTkdFCiAgICAg ICAgICAgKiAwIFJFQ0VOVAogICAgICAgICAgICogNDIyOCBFWElTVFMKICAgICAgICAgICAqIDEg UkVDRU5UCiAgICAgICAgICAgKiA0MjI4IEVYUFVOR0UKICAgICAgICAgICAqIDAgUkVDRU5UCiAg ICAgICAgICAgKiBPSyBTdGlsbCBoZXJlCiAgICAgICAgICAgKiBPSyBTdGlsbCBoZXJlCiAgICAg ICAgICAgKiBPSyBTdGlsbCBoZXJlCiAgICAgICAgICAgKiBPSyBTdGlsbCBoZXJlCiAgICAgICAg ICAgKiA0MjI4IEVYSVNUUwogICAgICAgICAgICogMSBSRUNFTlQKICAgICAgICAgICAqIDQyMjgg RVhQVU5HRQogICAgICAgICAgICogMCBSRUNFTlQKICAgICAgICAgICAqIE9LIFN0aWxsIGhlcmUK ICAgICAgICAgICAqIE9LIFN0aWxsIGhlcmUKICAgICAgICAgICBkIGlkbGUKICAgICAgICAgICBj IEJBRCBJZGxlIGNvbXBsZXRlZC4KICAgICAgICAgICArIGlkbGluZwogICAgICAgICAgICogT0sg U3RpbGwgaGVyZQogICAgICAgICAgICogNDIyOCBFWElTVFMKICAgICAgICAgICAqIDEgUkVDRU5U CiAgICAgICAgICAgKiA0MjI4IEVYUFVOR0UKICAgICAgICAgICAqIDAgUkVDRU5UCiAgICAgICAg ICAgKiBPSyBTdGlsbCBoZXJlCiAgICAgICAgICAgKiA0MjI4IEVYSVNUUwogICAgICAgICAgICog NDIyNyBGRVRDSCAoRkxBR1MgKFxTZWVuICROb3RKdW5rIE5vdEp1bmspKQogICAgICAgICAgICog NDIyOCBFWFBVTkdFCiAgICAgICAgICAgKiBPSyBTdGlsbCBoZXJlCgoKICAgICAgICAgICBpbiB0 aGUgbG9nIEkgc2VlIGZvbGxvd2luZzoKCiAgICAgICAgICAgSnVuIDI1IDE0OjIxOjE3IGNsYXNz aWMgZG92ZWNvdFsyOTI5Ml06IGltYXAtaGliZXJuYXRlOiBFcnJvcjoKICAgICAgICAgICBjb25u IHVuaXg6aW1hcC1oaWJlcm5hdGUgKHVpZD0xMjUpOiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlu cHV0OgogICAgICAgICAgIEludmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6IDE4NDQ2NzQ0MDcz NzA5NTUxNjE1CiAgICAgICAgICAgSnVuIDI1IDE0OjIxOjE3IGNsYXNzaWMgZG92ZWNvdFsyOTI5 Ml06CiAgICAgICAgICAgaW1hcChbNl1qb3JkYW5Ab3N0cmVmZi5pbmZvKTwyOTQ1ND48Q0xQL0Vo SlZxSWd1Q3QwMD46IEVycm9yOgogICAgICAgICAgIENvdWxkbid0IGhpYmVybmF0ZSBpbWFwIGNs aWVudDogL3Zhci9ydW4vZG92ZWNvdC9pbWFwLWhpYmVybmF0ZQogICAgICAgICAgIHJldHVybmVk IGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAgICAg ICBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgICAgICBK dW4gMjUgMTQ6MjE6MTcgY2xhc3NpYyBkb3ZlY290WzI5MjkyXTogaW1hcC1oaWJlcm5hdGU6IEVy cm9yOgogICAgICAgICAgIGNvbm4gdW5peDppbWFwLWhpYmVybmF0ZSAodWlkPTEyNSk6IEZhaWxl ZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6CiAgICAgICAgICAgSW52YWxpZCBwZWVyX2Rldl9tYWpv ciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgICAgICBKdW4gMjUgMTQ6MjE6MTcg Y2xhc3NpYyBkb3ZlY290WzI5MjkyXToKICAgICAgICAgICBpbWFwKFs3XWpvcmRhbkBvc3RyZWZm LmluZm8pPDMwOTQzPjxFSlpFTFJKVnA1UXVDdDAwPjogRXJyb3I6CiAgICAgICAgICAgQ291bGRu J3QgaGliZXJuYXRlIGltYXAgY2xpZW50OiAvdmFyL3J1bi9kb3ZlY290L2ltYXAtaGliZXJuYXRl CiAgICAgICAgICAgcmV0dXJuZWQgZmFpbHVyZTogRmFpbGVkIHRvIHBhcnNlIGNsaWVudCBpbnB1 dDogSW52YWxpZAogICAgICAgICAgIHBlZXJfZGV2X21ham9yIHZhbHVlOiAxODQ0Njc0NDA3Mzcw OTU1MTYxNQogICAgICAgICAgIEp1biAyNSAxNDoyNjowMyBjbGFzc2ljIGRvdmVjb3RbMjkyOTJd OiBpbWFwLWhpYmVybmF0ZTogRXJyb3I6CiAgICAgICAgICAgY29ubiB1bml4OmltYXAtaGliZXJu YXRlICh1aWQ9MTI1KTogRmFpbGVkIHRvIHBhcnNlIGNsaWVudCBpbnB1dDoKICAgICAgICAgICBJ bnZhbGlkIHBlZXJfZGV2X21ham9yIHZhbHVlOiAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAgICAg ICAgIEp1biAyNSAxNDoyNjowMyBjbGFzc2ljIGRvdmVjb3RbMjkyOTJdOgogICAgICAgICAgIGlt YXAoWzhdam9yZGFuQG9zdHJlZmYuaW5mbyk8MzA5NDM+PEVKWkVMUkpWcDVRdUN0MDA+OiBFcnJv cjoKICAgICAgICAgICBDb3VsZG4ndCBoaWJlcm5hdGUgaW1hcCBjbGllbnQ6IC92YXIvcnVuL2Rv dmVjb3QvaW1hcC1oaWJlcm5hdGUKICAgICAgICAgICByZXR1cm5lZCBmYWlsdXJlOiBGYWlsZWQg dG8gcGFyc2UgY2xpZW50IGlucHV0OiBJbnZhbGlkCiAgICAgICAgICAgcGVlcl9kZXZfbWFqb3Ig dmFsdWU6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1CiAgICAgICAgICAgSnVuIDI1IDE0OjI2OjAzIGNs YXNzaWMgZG92ZWNvdFsyOTI5Ml06IGltYXAtaGliZXJuYXRlOiBFcnJvcjoKICAgICAgICAgICBj b25uIHVuaXg6aW1hcC1oaWJlcm5hdGUgKHVpZD0xMjUpOiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50 IGlucHV0OgogICAgICAgICAgIEludmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6IDE4NDQ2NzQ0 MDczNzA5NTUxNjE1CiAgICAgICAgICAgSnVuIDI1IDE0OjI2OjAzIGNsYXNzaWMgZG92ZWNvdFsy OTI5Ml06CiAgICAgICAgICAgaW1hcChbOV1qb3JkYW5Ab3N0cmVmZi5pbmZvKTwyOTQ1ND48Q0xQ L0VoSlZxSWd1Q3QwMD46IEVycm9yOgogICAgICAgICAgIENvdWxkbid0IGhpYmVybmF0ZSBpbWFw IGNsaWVudDogL3Zhci9ydW4vZG92ZWNvdC9pbWFwLWhpYmVybmF0ZQogICAgICAgICAgIHJldHVy bmVkIGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAg ICAgICBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgICAg ICBKdW4gMjUgMTQ6Mjk6MjggY2xhc3NpYyBkb3ZlY290WzI5MjkyXTogaW1hcC1oaWJlcm5hdGU6 IEVycm9yOgogICAgICAgICAgIGNvbm4gdW5peDppbWFwLWhpYmVybmF0ZSAodWlkPTEyNSk6IEZh aWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6CiAgICAgICAgICAgSW52YWxpZCBwZWVyX2Rldl9t YWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgICAgICBKdW4gMjUgMTQ6Mjk6 MjggY2xhc3NpYyBkb3ZlY290WzI5MjkyXToKICAgICAgICAgICBpbWFwKFsxMF1qb3JkYW5Ab3N0 cmVmZi5pbmZvKTwyOTQ1ND48Q0xQL0VoSlZxSWd1Q3QwMD46IEVycm9yOgogICAgICAgICAgIENv dWxkbid0IGhpYmVybmF0ZSBpbWFwIGNsaWVudDogL3Zhci9ydW4vZG92ZWNvdC9pbWFwLWhpYmVy bmF0ZQogICAgICAgICAgIHJldHVybmVkIGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQg aW5wdXQ6IEludmFsaWQKICAgICAgICAgICBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQw NzM3MDk1NTE2MTUKICAgICAgICAgICBKdW4gMjUgMTQ6MzM6MzYgY2xhc3NpYyBkb3ZlY290WzI5 MjkyXTogaW1hcC1oaWJlcm5hdGU6IEVycm9yOgogICAgICAgICAgIGNvbm4gdW5peDppbWFwLWhp YmVybmF0ZSAodWlkPTEyNSk6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6CiAgICAgICAg ICAgSW52YWxpZCBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAg ICAgICAgICBKdW4gMjUgMTQ6MzM6MzYgY2xhc3NpYyBkb3ZlY290WzI5MjkyXToKICAgICAgICAg ICBpbWFwKFsxMV1qb3JkYW5Ab3N0cmVmZi5pbmZvKTwzMzExND48Y1g1UVdSSlZyWmd1Q3QwMD46 IEVycm9yOgogICAgICAgICAgIENvdWxkbid0IGhpYmVybmF0ZSBpbWFwIGNsaWVudDogL3Zhci9y dW4vZG92ZWNvdC9pbWFwLWhpYmVybmF0ZQogICAgICAgICAgIHJldHVybmVkIGZhaWx1cmU6IEZh aWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAgICAgICBwZWVyX2Rldl9t YWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgICAgICBKdW4gMjUgMTQ6MzM6 MzcgY2xhc3NpYyBkb3ZlY290WzI5MjkyXTogaW1hcC1oaWJlcm5hdGU6IEVycm9yOgogICAgICAg ICAgIGNvbm4gdW5peDppbWFwLWhpYmVybmF0ZSAodWlkPTEyNSk6IEZhaWxlZCB0byBwYXJzZSBj bGllbnQgaW5wdXQ6CiAgICAgICAgICAgSW52YWxpZCBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0 NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgICAgICBKdW4gMjUgMTQ6MzM6MzcgY2xhc3NpYyBkb3Zl Y290WzI5MjkyXToKICAgICAgICAgICBpbWFwKFsxMl1qb3JkYW5Ab3N0cmVmZi5pbmZvKTwzMzEx Mj48TmxWT1dSSlZrYkV1Q3QwMD46IEVycm9yOgogICAgICAgICAgIENvdWxkbid0IGhpYmVybmF0 ZSBpbWFwIGNsaWVudDogL3Zhci9ydW4vZG92ZWNvdC9pbWFwLWhpYmVybmF0ZQogICAgICAgICAg IHJldHVybmVkIGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQK ICAgICAgICAgICBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAg ICAgICAgICBKdW4gMjUgMTQ6MzQ6NDAgY2xhc3NpYyBkb3ZlY290WzI5MjkyXTogaW1hcC1oaWJl cm5hdGU6IEVycm9yOgogICAgICAgICAgIGNvbm4gdW5peDppbWFwLWhpYmVybmF0ZSAodWlkPTEy NSk6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6CiAgICAgICAgICAgSW52YWxpZCBwZWVy X2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgICAgICBKdW4gMjUg MTQ6MzQ6NDAgY2xhc3NpYyBkb3ZlY290WzI5MjkyXToKICAgICAgICAgICBpbWFwKFsxM11qb3Jk YW5Ab3N0cmVmZi5pbmZvKTwzMzExMj48TmxWT1dSSlZrYkV1Q3QwMD46IEVycm9yOgogICAgICAg ICAgIENvdWxkbid0IGhpYmVybmF0ZSBpbWFwIGNsaWVudDogL3Zhci9ydW4vZG92ZWNvdC9pbWFw LWhpYmVybmF0ZQogICAgICAgICAgIHJldHVybmVkIGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBj bGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAgICAgICBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0 NDY3NDQwNzM3MDk1NTE2MTUKCgogICAgICAgICAgIEhlcmUgaXMgbXkgcGllY2Ugb2YgbXkgY29u ZmlnOgogICAgICAgICAgICMgZG92ZWNvdCAtYSB8IGdyZXAgaGliZXJuYXRlCiAgICAgICAgICAg aW1hcF9oaWJlcm5hdGVfdGltZW91dCA9IDEgbWlucwogICAgICAgICAgIHNlcnZpY2UgaW1hcC1o aWJlcm5hdGUgewogICAgICAgICAgIHVuaXhfbGlzdGVuZXIgaW1hcC1oaWJlcm5hdGUgewoKICAg ICAgICAgICBXaGF0IHdlIGNhbiBkbyBtb3JlPwoKICAgICAgICAgICBLUiwKICAgICAgICAgICBK b3JkYW4KCgoKICAgICAgICAgICAgIE9uIDI1IEp1biAyMDI2LCBhdCAxMjozNCwgVGltbyBTaXJh aW5lbiA8WzE0XXRpbW9Ac2lyYWluZW4uY29tPgogICAgICAgICAgICAgd3JvdGU6CgogICAgICAg ICAgICAgT24gMjQuIEp1biAyMDI2LCBhdCAyMS4zNCwgSm9yZGFuIE9zdHJldiB2aWEgZG92ZWNv dAogICAgICAgICAgICAgPFsxNV1kb3ZlY290QGRvdmVjb3Qub3JnPiB3cm90ZToKCiAgICAgICAg ICAgICAgIEhpLAogICAgICAgICAgICAgICBJTUFQIGhpYmVybmF0aW9uIGNvbXBpbGVzIGFuZCBh dHRlbXB0cyB0byBydW4gb24gRnJlZUJTRCAxNS54CiAgICAgICAgICAgICAgICh0ZXN0ZWQgd2l0 aAogICAgICAgICAgICAgICBEb3ZlY290IDIuNC40IGFuZCBGcmVlQlNEIDE1LjEpLCBidXQgZmFp bHMgYXQgcnVudGltZSB3aXRoOgogICAgICAgICAgICAgICBwbGFpbgoKICAgICAgICAgICAgICAg aW1hcC1oaWJlcm5hdGU6IEVycm9yOiBjb25uIHVuaXg6aW1hcC1oaWJlcm5hdGUgKHVpZD0xMjUp OgogICAgICAgICAgICAgICBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlucHV0OiBJbnZhbGlkIHBl ZXJfZGV2X21ham9yIHZhbHVlOgogICAgICAgICAgICAgICAxODQ0Njc0NDA3MzcwOTU1MTYxNQoK ICAgICAgICAgICAgICAgSnVuIDI0IDIxOjI3OjA4IGNsYXNzaWMgZG92ZWNvdFszNjg4OF06IGlt YXAtaGliZXJuYXRlOiBFcnJvcjoKICAgICAgICAgICAgICAgY29ubiB1bml4OmltYXAtaGliZXJu YXRlICh1aWQ9MTI1KTogRmFpbGVkIHRvIHBhcnNlIGNsaWVudAogICAgICAgICAgICAgICBpbnB1 dDogSW52YWxpZCBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAg ICAgICAgICAgICAgSnVuIDI0IDIxOjI3OjA4IGNsYXNzaWMgZG92ZWNvdFszNjg4OF06CiAgICAg ICAgICAgICAgIGltYXAoWzE2XWpvcmRhbkBvc3RyZWZmLmluZm8pPDM3MTIwPjxFeGFWL2dOVkFk dC9BQUFCPjogRXJyb3I6CiAgICAgICAgICAgICAgIENvdWxkbid0IGhpYmVybmF0ZSBpbWFwIGNs aWVudDoKICAgICAgICAgICAgICAgL3Zhci9ydW4vZG92ZWNvdC9pbWFwLWhpYmVybmF0ZSByZXR1 cm5lZCBmYWlsdXJlOiBGYWlsZWQgdG8KICAgICAgICAgICAgICAgcGFyc2UgY2xpZW50IGlucHV0 OiBJbnZhbGlkIHBlZXJfZGV2X21ham9yIHZhbHVlOgogICAgICAgICAgICAgICAxODQ0Njc0NDA3 MzcwOTU1MTYxNQoKICAgICAgICAgICAgIC4uCgogICAgICAgICAgICAgICAxLiBEaXNhYmxlIGhp YmVybmF0aW9uIGF0IGNvbXBpbGUgdGltZSBmb3Iga3F1ZXVlIHN5c3RlbXMsIG9yCgogICAgICAg ICAgICAgSXQgd2FzIGFscmVhZHkgc3VwcG9zZWQgdG8gYmUgZG9uZSwgYnV0IGxvb2tzIGxpa2Ug dGhlcmUncyBhCiAgICAgICAgICAgICBidWcuIENhbiB5b3UgdmVyaWZ5IGlmIHRoaXMgd29ya3M/ IDoKCiAgICAgICAgICAgICBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFj CiAgICAgICAgICAgICBpbmRleCA5YmVhY2FhMjk5Li4wNGY5YzhlZGQ2IDEwMDY0NAogICAgICAg ICAgICAgLS0tIGEvY29uZmlndXJlLmFjCiAgICAgICAgICAgICArKysgYi9jb25maWd1cmUuYWMK ICAgICAgICAgICAgIEBAIC0zNjMsNyArMzYzLDcgQEAgRE9WRUNPVF9UWVBFT0YKICAgICAgICAg ICAgIERPVkVDT1RfSU9MT09QCiAgICAgICAgICAgICBET1ZFQ09UX05PVElGWQogICAgICAgICAg ICAgQVNfQ0FTRSgKICAgICAgICAgICAgIC0gWyIkbm90aWZ5Il0sCiAgICAgICAgICAgICArIFsi JGhhdmVfbm90aWZ5Il0sCiAgICAgICAgICAgICBbbm9uZV0sIFtCVUlMRF9JTUFQX0hJQkVSTkFU RT0wXSwKICAgICAgICAgICAgIFtrcXVldWVdLCBbQlVJTERfSU1BUF9ISUJFUk5BVEU9MF0sCiAg ICAgICAgICAgICBbQlVJTERfSU1BUF9ISUJFUk5BVEU9MV0pCgogICAgICAgSGkgVGltbywKCiAg ICAgICBJIGFtIHJ1bm5pbmcgRG92ZWNvdCAyLjQuNCB1bmRlciBGcmVlQlNEIDE1LngsIGFuZCBJ IG5vdGljZWQgdGhhdCB0aGUKICAgICAgIElNQVAKICAgICAgIGhpYmVybmF0aW9uIGZlYXR1cmUg ZmFpbHMgdG8gd29yayBuYXRpdmVseSBvbiB0aGlzIHBsYXRmb3JtLgoKICAgICAgIFRoZSBQcm9i bGVtCgogICAgICAgVW5kZXIgRnJlZUJTRCwgcnVubmluZyBmc3RhdCgpIG9uIGEgbmV0d29yayBz b2NrZXQKICAgICAgIHJldHVybnMgTk9ERVYgKFVJTlQ2NF9NQVggb3IgMTg0NDY3NDQwNzM3MDk1 NTE2MTUpIGZvcgogICAgICAgYm90aCBtYWpvcigpYW5kIG1pbm9yKCkgZGV2aWNlIG51bWJlcnMu CgogICAgICAgV2hlbiBpbWFwLWhpYmVybmF0ZSB0cmllcyB0byBzZXJpYWxpemUgdGhlc2UgdmFs dWVzLCB0aGV5IGFyZSBwcmludGVkCiAgICAgICBhcwogICAgICAgNjQtYml0IHVuc2lnbmVkIGlu dGVnZXJzLiBIb3dldmVyLCBEb3ZlY290J3MgaW50ZXJuYWwgcGFyc2VyCiAgICAgICBpbiBpbWFw LW1hc3Rlci1jbGllbnQuYyB1c2VzIHN0YW5kYXJkIDMyLWJpdCBpbnRlZ2VycyAodW5zaWduZWQg aW50KQogICAgICAgYW5kIHN0cl90b191aW50KCkuIFRoaXMgY2F1c2VzIGFuIGludGVnZXIgb3Zl cmZsb3csIHRyaWdnZXJpbmcgdGhlCiAgICAgICBmb2xsb3dpbmcgZXJyb3IgZHVyaW5nIGhpYmVy bmF0aW9uOiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlucHV0OgogICAgICAgSW52YWxpZAogICAg ICAgcGVlcl9kZXZfbWFqb3IgdmFsdWU6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1CgogICAgICAgVGhl IFNvbHV0aW9uCgogICAgICAgSSd2ZSBjcmVhdGVkIGEgcGF0Y2ggZm9yIHNyYy9pbWFwL2ltYXAt bWFzdGVyLWNsaWVudC5jIHRoYXQgc2NhbGVzIHRoZQogICAgICAgcGFyc2VyIHZhcmlhYmxlcyB0 byB1aW50NjRfdCBhbmQgc3dpdGNoZXMgdGhlIHBhcnNpbmcgZnVuY3Rpb24KICAgICAgIHRvIHN0 cl90b191aW50NjQoKS4gQWRkaXRpb25hbGx5LCBpdCB1cGRhdGVzIHRoZSB2ZXJpZmljYXRpb24K ICAgICAgIGFzc2VydGlvbiB0bwogICAgICAgcHJldmVudCBCVUcgY3Jhc2hlcyBkdWUgdG8gdGhl IGV4cGVjdGVkIGRldl90YmVoYXZpb3Igb2YgdmlydHVhbAogICAgICAgbmV0d29yawogICAgICAg c29ja2V0cyB1bmRlciBGcmVlQlNELgoKICAgICAgIEhlcmUgaXMgdGhlIGNvbWJpbmVkIHBhdGNo IHRoYXQgZml4ZXMgdGhlIGlzc3VlIGNvbXBsZXRlbHk6CgogICAgICAgRnJhZ21lbnQgb3Qga29k CgogICAgICAgLS0tIHNyYy9pbWFwL2ltYXAtbWFzdGVyLWNsaWVudC5jLm9yaWcgMjAyNi0wNS0x MiAxMDo0ODo1NyBVVEMKICAgICAgICsrKyBzcmMvaW1hcC9pbWFwLW1hc3Rlci1jbGllbnQuYwog ICAgICAgQEAgLTc1LDcgKzc1LDcgQEAgaW1hcF9tYXN0ZXJfY2xpZW50X3BhcnNlX2lucHV0KGNv bnN0IGNoYXIgKmNvbnN0CiAgICAgICAqYXJncwogICAgICAgY29uc3QgY2hhciAqKmVycm9yX3Ip CiAgICAgICB7CiAgICAgICBjb25zdCBjaGFyICprZXksICp2YWx1ZTsKICAgICAgIC0gdW5zaWdu ZWQgaW50IHBlZXJfZGV2X21ham9yID0gMCwgcGVlcl9kZXZfbWlub3IgPSAwOwogICAgICAgKyB1 aW50NjRfdCBwZWVyX2Rldl9tYWpvciA9IDAsIHBlZXJfZGV2X21pbm9yID0gMDsKCiAgICAgICBp X3plcm8oaW5wdXRfcik7CiAgICAgICBpX3plcm8oc3RhdHNfcik7CiAgICAgICBAQCAtMTI4LDEz ICsxMjgsMTMgQEAgaW1hcF9tYXN0ZXJfY2xpZW50X3BhcnNlX2lucHV0KGNvbnN0IGNoYXIgKmNv bnN0CiAgICAgICAqYXJncwogICAgICAgcmV0dXJuIC0xOwogICAgICAgfQogICAgICAgfSBlbHNl IGlmIChzdHJjbXAoa2V5LCAicGVlcl9kZXZfbWFqb3IiKSA9PSAwKSB7CiAgICAgICAtIGlmIChz dHJfdG9fdWludCh2YWx1ZSwgJnBlZXJfZGV2X21ham9yKSA8IDApIHsKICAgICAgICsgaWYgKHN0 cl90b191aW50NjQodmFsdWUsICZwZWVyX2Rldl9tYWpvcikgPCAwKSB7CiAgICAgICAqZXJyb3Jf ciA9IHRfc3RyZHVwX3ByaW50ZigKICAgICAgICJJbnZhbGlkIHBlZXJfZGV2X21ham9yIHZhbHVl OiAlcyIsIHZhbHVlKTsKICAgICAgIHJldHVybiAtMTsKICAgICAgIH0KICAgICAgIH0gZWxzZSBp ZiAoc3RyY21wKGtleSwgInBlZXJfZGV2X21pbm9yIikgPT0gMCkgewogICAgICAgLSBpZiAoc3Ry X3RvX3VpbnQodmFsdWUsICZwZWVyX2Rldl9taW5vcikgPCAwKSB7CiAgICAgICArIGlmIChzdHJf dG9fdWludDY0KHZhbHVlLCAmcGVlcl9kZXZfbWlub3IpIDwgMCkgewogICAgICAgKmVycm9yX3Ig PSB0X3N0cmR1cF9wcmludGYoCiAgICAgICAiSW52YWxpZCBwZWVyX2Rldl9taW5vciB2YWx1ZTog JXMiLCB2YWx1ZSk7CiAgICAgICByZXR1cm4gLTE7CiAgICAgICBAQCAtMjY1LDcgKzI2NSw3IEBA IGltYXBfbWFzdGVyX2NsaWVudF9wYXJzZV9pbnB1dChjb25zdCBjaGFyICpjb25zdAogICAgICAg KmFyZ3MKICAgICAgIH0KICAgICAgIGlmIChwZWVyX2Rldl9tYWpvciAhPSAwIHx8IHBlZXJfZGV2 X21pbm9yICE9IDApIHsKICAgICAgIG1hc3Rlcl9pbnB1dF9yLT5wZWVyX2RldiA9CiAgICAgICAt IG1ha2VkZXYocGVlcl9kZXZfbWFqb3IsIHBlZXJfZGV2X21pbm9yKTsKICAgICAgICsgbWFrZWRl digodW5zaWduZWQgbG9uZylwZWVyX2Rldl9tYWpvciwgKHVuc2lnbmVkCiAgICAgICBsb25nKXBl ZXJfZGV2X21pbm9yKTsKICAgICAgIH0KICAgICAgIHJldHVybiAwOwogICAgICAgfQogICAgICAg QEAgLTQxMCw3ICs0MTAsOCBAQCBzdGF0aWMgaW50IGltYXBfbWFzdGVyX2NsaWVudF92ZXJpZnko Y29uc3Qgc3RydWN0CiAgICAgICBpbWFwCiAgICAgICByZXR1cm4gLTE7CiAgICAgICB9CiAgICAg ICBpZiAocGVlcl9zdC5zdF9pbm8gIT0gbWFzdGVyX2lucHV0LT5wZWVyX2lubyB8fAogICAgICAg LSAhQ01QX0RFVl9UKHBlZXJfc3Quc3RfZGV2LCBtYXN0ZXJfaW5wdXQtPnBlZXJfZGV2KSkgewog ICAgICAgKyAoIUNNUF9ERVZfVChwZWVyX3N0LnN0X2RldiwgbWFzdGVyX2lucHV0LT5wZWVyX2Rl dikgJiYKICAgICAgICsgbWFqb3IocGVlcl9zdC5zdF9kZXYpICE9ICh1bnNpZ25lZCBsb25nKS0x KSkgewogICAgICAgKmVycm9yX3IgPSB0X3N0cmR1cF9wcmludGYoCiAgICAgICAiQlVHOiBFeHBl Y3RlZCBwZWVyIGRldmljZT0lbHUsJWx1IGlub2RlPSVzIGRvZXNuJ3QgbWF0Y2ggIgogICAgICAg ImNsaWVudCBmZCdzIGFjdHVhbCBkZXZpY2U9JWx1LCVsdSBpbm9kZT0lcyIsCgogICAgICAgUmVz dWx0CgogICAgICAgV2l0aCB0aGlzIHBhdGNoIGFwcGxpZWQsIGhpYmVybmF0aW9uIHdvcmtzIGZs YXdsZXNzbHkgdW5kZXIgRnJlZUJTRDoKCiAgICAgICAjIGRvdmVhZG0gd2hvCiAgICAgICB1c2Vy bmFtZSAjIHNlcnZpY2UgKHBpZHMpIChpcHMpCiAgICAgICBbMTddam9yZGFuQG9zdHJlZmYuaW5m byAxIGltYXAgKDI2MDAwKSAoNDYuMTAuMjIxLjUyKQogICAgICAgWzE4XWpvcmRhbkBvc3RyZWZm LmluZm8gMiBpbWFwLWhpYmVybmF0ZSAoMjYyNjApICg0Ni4xMC4yMjEuNTIpCgogICAgICAgTm8g ZXJyb3IgbWVzc2FnZXMgYXJlIGxvZ2dlZCBieSBkb3ZlY290IHdoZW4gaXQgaGliZXJuYXRlcyBh bmQKICAgICAgIHJlc3RvcmVzCiAgICAgICBjbGllbnRzLiBJIGhvcGUgdGhpcyBjYW4gYmUgaW50 ZWdyYXRlZCBpbnRvIHRoZSB1cHN0cmVhbSBjb2RlLgoKICAgICAgIEJlc3QgcmVnYXJkcywKCiAg ICAgICBKb3JkYW4KCiAgICAgICBPbiAyNSBKdW4gMjAyNiwgYXQgMTU6NTAsIEpvcmRhbiBPc3Ry ZXYgPFsxOV1qb3JkYW5Ab3N0cmVmZi5pbmZvPgogICAgICAgd3JvdGU6CiAgICAgICBIaSBUaW1v LAogICAgICAgaSdtIG5vdCBwcm9ncmFtbWVyIGF0IGFsbCBidXQgaGVyZSBpcyBteSB1bmRlcnN0 YW5kaW5nIG9mIHRoZSBwcm9ibGVtOgoKICAgICAgIEluIHNyYy9pbWFwL2ltYXAtY2xpZW50LWhp YmVybmF0ZS5jLCB0aGUgY29kZSBzZXJpYWxpemVzCiAgICAgICBwZWVyX2Rldl9tYWpvciBhbmQg cGVlcl9kZXZfbWlub3IgdXNpbmcgbWFqb3IoKSBhbmQgbWlub3IoKSBtYWNyb3M6CgogICAgICAg c3RyX3ByaW50ZmEoY21kLAogICAgICAgIlx0cGVlcl9kZXZfbWFqb3I9JWx1XHRwZWVyX2Rldl9t aW5vcj0lbHVcdHBlZXJfaW5vPSVsbHUiLAogICAgICAgKHVuc2lnbmVkIGxvbmcpbWFqb3IocGVl cl9zdC5zdF9kZXYpLAogICAgICAgKHVuc2lnbmVkIGxvbmcpbWlub3IocGVlcl9zdC5zdF9kZXYp LAogICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylwZWVyX3N0LnN0X2lubyk7CgogICAgICAgT24g RnJlZUJTRCwgbWFqb3IoKSBhbmQgbWlub3IoKSBjYW4gcmV0dXJuIFVJTlQ2NF9NQVgKICAgICAg ICgxODQ0Njc0NDA3MzcwOTU1MTYxNSkgZm9yIGZpbGUgZGVzY3JpcHRvcnMgdGhhdCBhcmUgbm90 CiAgICAgICBibG9jay9jaGFyYWN0ZXIgZGV2aWNlcyAoc3VjaCBhcyBzb2NrZXRzIG9uIHRtcGZz L2RldmZzKS4gVGhpcyB2YWx1ZQogICAgICAgZXhjZWVkcyBVSU5UX01BWCBhbmQgY2Fubm90IGJl IHBhcnNlZCBieSBzdHJfdG9fdWludCgpIGluCiAgICAgICBpbWFwLW1hc3Rlci1jbGllbnQuYywg Y2F1c2luZyBoaWJlcm5hdGlvbiB0byBmYWlsLgoKICAgICAgIE9uIDI1IEp1biAyMDI2LCBhdCAx NDozNywgSm9yZGFuIE9zdHJldiA8WzIwXWpvcmRhbkBvc3RyZWZmLmluZm8+CiAgICAgICB3cm90 ZToKICAgICAgIEhpIFRpbW8sCgogICAgICAgSSd2ZSBtYWRlIGZyZWVic2QgcG9ydCBwYXRjaCB3 aGljaCBsb29rcyBsaWtlIHRoYXQ6CgogICAgICAgIyBjYXQgZmlsZXMvcGF0Y2gtY29uZmlndXJl LmFjCiAgICAgICAtLS0gY29uZmlndXJlLmFjLm9yaWcgMjAyNi0wNi0yNSAxMTowMzo0MiBVVEMK ICAgICAgICsrKyBjb25maWd1cmUuYWMKICAgICAgIEBAIC0zNjMsNyArMzYzLDcgQEAgQVNfQ0FT RSgKICAgICAgIERPVkVDT1RfSU9MT09QCiAgICAgICBET1ZFQ09UX05PVElGWQogICAgICAgQVNf Q0FTRSgKICAgICAgIC0gWyIkbm90aWZ5Il0sCiAgICAgICArIFsiJGhhdmVfbm90aWZ5Il0sCiAg ICAgICBbbm9uZV0sIFtCVUlMRF9JTUFQX0hJQkVSTkFURT0wXSwKICAgICAgIFtrcXVldWVdLCBb QlVJTERfSU1BUF9ISUJFUk5BVEU9MF0sCiAgICAgICBbQlVJTERfSU1BUF9ISUJFUk5BVEU9MV0p CgogICAgICAgSSdtIHNpbXVsYXRpbmcgdGhlIHNpdHVhdGlvbiB3aXRoIHRlbG5ldDoKICAgICAg IGMgaWRsZQogICAgICAgKyBpZGxpbmcKICAgICAgICogNDIyOCBFWFBVTkdFCiAgICAgICAqIDAg UkVDRU5UCiAgICAgICAqIE9LIFN0aWxsIGhlcmUKICAgICAgICogT0sgU3RpbGwgaGVyZQogICAg ICAgKiA0MjI4IEVYSVNUUwogICAgICAgKiAxIFJFQ0VOVAogICAgICAgKiA0MjI4IEVYUFVOR0UK ICAgICAgICogMCBSRUNFTlQKICAgICAgICogNDIyOCBFWElTVFMKICAgICAgICogMSBSRUNFTlQK ICAgICAgICogNDIyOCBFWFBVTkdFCiAgICAgICAqIDAgUkVDRU5UCiAgICAgICAqIE9LIFN0aWxs IGhlcmUKICAgICAgICogT0sgU3RpbGwgaGVyZQogICAgICAgKiBPSyBTdGlsbCBoZXJlCiAgICAg ICAqIE9LIFN0aWxsIGhlcmUKICAgICAgICogNDIyOCBFWElTVFMKICAgICAgICogMSBSRUNFTlQK ICAgICAgICogNDIyOCBFWFBVTkdFCiAgICAgICAqIDAgUkVDRU5UCiAgICAgICAqIE9LIFN0aWxs IGhlcmUKICAgICAgICogT0sgU3RpbGwgaGVyZQogICAgICAgZCBpZGxlCiAgICAgICBjIEJBRCBJ ZGxlIGNvbXBsZXRlZC4KICAgICAgICsgaWRsaW5nCiAgICAgICAqIE9LIFN0aWxsIGhlcmUKICAg ICAgICogNDIyOCBFWElTVFMKICAgICAgICogMSBSRUNFTlQKICAgICAgICogNDIyOCBFWFBVTkdF CiAgICAgICAqIDAgUkVDRU5UCiAgICAgICAqIE9LIFN0aWxsIGhlcmUKICAgICAgICogNDIyOCBF WElTVFMKICAgICAgICogNDIyNyBGRVRDSCAoRkxBR1MgKFxTZWVuICROb3RKdW5rIE5vdEp1bmsp KQogICAgICAgKiA0MjI4IEVYUFVOR0UKICAgICAgICogT0sgU3RpbGwgaGVyZQoKICAgICAgIGlu IHRoZSBsb2cgSSBzZWUgZm9sbG93aW5nOgoKICAgICAgIEp1biAyNSAxNDoyMToxNyBjbGFzc2lj IGRvdmVjb3RbMjkyOTJdOiBpbWFwLWhpYmVybmF0ZTogRXJyb3I6IGNvbm4KICAgICAgIHVuaXg6 aW1hcC1oaWJlcm5hdGUgKHVpZD0xMjUpOiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlucHV0OiBJ bnZhbGlkCiAgICAgICBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUK ICAgICAgIEp1biAyNSAxNDoyMToxNyBjbGFzc2ljIGRvdmVjb3RbMjkyOTJdOgogICAgICAgaW1h cChbMjFdam9yZGFuQG9zdHJlZmYuaW5mbyk8Mjk0NTQ+PENMUC9FaEpWcUlndUN0MDA+OiBFcnJv cjoKICAgICAgIENvdWxkbid0CiAgICAgICBoaWJlcm5hdGUgaW1hcCBjbGllbnQ6IC92YXIvcnVu L2RvdmVjb3QvaW1hcC1oaWJlcm5hdGUgcmV0dXJuZWQKICAgICAgIGZhaWx1cmU6IEZhaWxlZCB0 byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6CiAgICAg ICAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0OjIxOjE3IGNsYXNzaWMgZG92 ZWNvdFsyOTI5Ml06IGltYXAtaGliZXJuYXRlOiBFcnJvcjogY29ubgogICAgICAgdW5peDppbWFw LWhpYmVybmF0ZSAodWlkPTEyNSk6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFs aWQKICAgICAgIHBlZXJfZGV2X21ham9yIHZhbHVlOiAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAg ICAgSnVuIDI1IDE0OjIxOjE3IGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06CiAgICAgICBpbWFwKFsy Ml1qb3JkYW5Ab3N0cmVmZi5pbmZvKTwzMDk0Mz48RUpaRUxSSlZwNVF1Q3QwMD46IEVycm9yOgog ICAgICAgQ291bGRuJ3QKICAgICAgIGhpYmVybmF0ZSBpbWFwIGNsaWVudDogL3Zhci9ydW4vZG92 ZWNvdC9pbWFwLWhpYmVybmF0ZSByZXR1cm5lZAogICAgICAgZmFpbHVyZTogRmFpbGVkIHRvIHBh cnNlIGNsaWVudCBpbnB1dDogSW52YWxpZCBwZWVyX2Rldl9tYWpvciB2YWx1ZToKICAgICAgIDE4 NDQ2NzQ0MDczNzA5NTUxNjE1CiAgICAgICBKdW4gMjUgMTQ6MjY6MDMgY2xhc3NpYyBkb3ZlY290 WzI5MjkyXTogaW1hcC1oaWJlcm5hdGU6IEVycm9yOiBjb25uCiAgICAgICB1bml4OmltYXAtaGli ZXJuYXRlICh1aWQ9MTI1KTogRmFpbGVkIHRvIHBhcnNlIGNsaWVudCBpbnB1dDogSW52YWxpZAog ICAgICAgcGVlcl9kZXZfbWFqb3IgdmFsdWU6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1CiAgICAgICBK dW4gMjUgMTQ6MjY6MDMgY2xhc3NpYyBkb3ZlY290WzI5MjkyXToKICAgICAgIGltYXAoWzIzXWpv cmRhbkBvc3RyZWZmLmluZm8pPDMwOTQzPjxFSlpFTFJKVnA1UXVDdDAwPjogRXJyb3I6CiAgICAg ICBDb3VsZG4ndAogICAgICAgaGliZXJuYXRlIGltYXAgY2xpZW50OiAvdmFyL3J1bi9kb3ZlY290 L2ltYXAtaGliZXJuYXRlIHJldHVybmVkCiAgICAgICBmYWlsdXJlOiBGYWlsZWQgdG8gcGFyc2Ug Y2xpZW50IGlucHV0OiBJbnZhbGlkIHBlZXJfZGV2X21ham9yIHZhbHVlOgogICAgICAgMTg0NDY3 NDQwNzM3MDk1NTE2MTUKICAgICAgIEp1biAyNSAxNDoyNjowMyBjbGFzc2ljIGRvdmVjb3RbMjky OTJdOiBpbWFwLWhpYmVybmF0ZTogRXJyb3I6IGNvbm4KICAgICAgIHVuaXg6aW1hcC1oaWJlcm5h dGUgKHVpZD0xMjUpOiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlucHV0OiBJbnZhbGlkCiAgICAg ICBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgIEp1biAy NSAxNDoyNjowMyBjbGFzc2ljIGRvdmVjb3RbMjkyOTJdOgogICAgICAgaW1hcChbMjRdam9yZGFu QG9zdHJlZmYuaW5mbyk8Mjk0NTQ+PENMUC9FaEpWcUlndUN0MDA+OiBFcnJvcjoKICAgICAgIENv dWxkbid0CiAgICAgICBoaWJlcm5hdGUgaW1hcCBjbGllbnQ6IC92YXIvcnVuL2RvdmVjb3QvaW1h cC1oaWJlcm5hdGUgcmV0dXJuZWQKICAgICAgIGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGll bnQgaW5wdXQ6IEludmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6CiAgICAgICAxODQ0Njc0NDA3 MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0OjI5OjI4IGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06 IGltYXAtaGliZXJuYXRlOiBFcnJvcjogY29ubgogICAgICAgdW5peDppbWFwLWhpYmVybmF0ZSAo dWlkPTEyNSk6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAgIHBl ZXJfZGV2X21ham9yIHZhbHVlOiAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0 OjI5OjI4IGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06CiAgICAgICBpbWFwKFsyNV1qb3JkYW5Ab3N0 cmVmZi5pbmZvKTwyOTQ1ND48Q0xQL0VoSlZxSWd1Q3QwMD46IEVycm9yOgogICAgICAgQ291bGRu J3QKICAgICAgIGhpYmVybmF0ZSBpbWFwIGNsaWVudDogL3Zhci9ydW4vZG92ZWNvdC9pbWFwLWhp YmVybmF0ZSByZXR1cm5lZAogICAgICAgZmFpbHVyZTogRmFpbGVkIHRvIHBhcnNlIGNsaWVudCBp bnB1dDogSW52YWxpZCBwZWVyX2Rldl9tYWpvciB2YWx1ZToKICAgICAgIDE4NDQ2NzQ0MDczNzA5 NTUxNjE1CiAgICAgICBKdW4gMjUgMTQ6MzM6MzYgY2xhc3NpYyBkb3ZlY290WzI5MjkyXTogaW1h cC1oaWJlcm5hdGU6IEVycm9yOiBjb25uCiAgICAgICB1bml4OmltYXAtaGliZXJuYXRlICh1aWQ9 MTI1KTogRmFpbGVkIHRvIHBhcnNlIGNsaWVudCBpbnB1dDogSW52YWxpZAogICAgICAgcGVlcl9k ZXZfbWFqb3IgdmFsdWU6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1CiAgICAgICBKdW4gMjUgMTQ6MzM6 MzYgY2xhc3NpYyBkb3ZlY290WzI5MjkyXToKICAgICAgIGltYXAoWzI2XWpvcmRhbkBvc3RyZWZm LmluZm8pPDMzMTE0PjxjWDVRV1JKVnJaZ3VDdDAwPjogRXJyb3I6CiAgICAgICBDb3VsZG4ndAog ICAgICAgaGliZXJuYXRlIGltYXAgY2xpZW50OiAvdmFyL3J1bi9kb3ZlY290L2ltYXAtaGliZXJu YXRlIHJldHVybmVkCiAgICAgICBmYWlsdXJlOiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlucHV0 OiBJbnZhbGlkIHBlZXJfZGV2X21ham9yIHZhbHVlOgogICAgICAgMTg0NDY3NDQwNzM3MDk1NTE2 MTUKICAgICAgIEp1biAyNSAxNDozMzozNyBjbGFzc2ljIGRvdmVjb3RbMjkyOTJdOiBpbWFwLWhp YmVybmF0ZTogRXJyb3I6IGNvbm4KICAgICAgIHVuaXg6aW1hcC1oaWJlcm5hdGUgKHVpZD0xMjUp OiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlucHV0OiBJbnZhbGlkCiAgICAgICBwZWVyX2Rldl9t YWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgIEp1biAyNSAxNDozMzozNyBj bGFzc2ljIGRvdmVjb3RbMjkyOTJdOgogICAgICAgaW1hcChbMjddam9yZGFuQG9zdHJlZmYuaW5m byk8MzMxMTI+PE5sVk9XUkpWa2JFdUN0MDA+OiBFcnJvcjoKICAgICAgIENvdWxkbid0CiAgICAg ICBoaWJlcm5hdGUgaW1hcCBjbGllbnQ6IC92YXIvcnVuL2RvdmVjb3QvaW1hcC1oaWJlcm5hdGUg cmV0dXJuZWQKICAgICAgIGZhaWx1cmU6IEZhaWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IElu dmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6CiAgICAgICAxODQ0Njc0NDA3MzcwOTU1MTYxNQog ICAgICAgSnVuIDI1IDE0OjM0OjQwIGNsYXNzaWMgZG92ZWNvdFsyOTI5Ml06IGltYXAtaGliZXJu YXRlOiBFcnJvcjogY29ubgogICAgICAgdW5peDppbWFwLWhpYmVybmF0ZSAodWlkPTEyNSk6IEZh aWxlZCB0byBwYXJzZSBjbGllbnQgaW5wdXQ6IEludmFsaWQKICAgICAgIHBlZXJfZGV2X21ham9y IHZhbHVlOiAxODQ0Njc0NDA3MzcwOTU1MTYxNQogICAgICAgSnVuIDI1IDE0OjM0OjQwIGNsYXNz aWMgZG92ZWNvdFsyOTI5Ml06CiAgICAgICBpbWFwKFsyOF1qb3JkYW5Ab3N0cmVmZi5pbmZvKTwz MzExMj48TmxWT1dSSlZrYkV1Q3QwMD46IEVycm9yOgogICAgICAgQ291bGRuJ3QKICAgICAgIGhp YmVybmF0ZSBpbWFwIGNsaWVudDogL3Zhci9ydW4vZG92ZWNvdC9pbWFwLWhpYmVybmF0ZSByZXR1 cm5lZAogICAgICAgZmFpbHVyZTogRmFpbGVkIHRvIHBhcnNlIGNsaWVudCBpbnB1dDogSW52YWxp ZCBwZWVyX2Rldl9tYWpvciB2YWx1ZToKICAgICAgIDE4NDQ2NzQ0MDczNzA5NTUxNjE1CgogICAg ICAgSGVyZSBpcyBteSBwaWVjZSBvZiBteSBjb25maWc6CiAgICAgICAjIGRvdmVjb3QgLWEgfCBn cmVwIGhpYmVybmF0ZQogICAgICAgaW1hcF9oaWJlcm5hdGVfdGltZW91dCA9IDEgbWlucwogICAg ICAgc2VydmljZSBpbWFwLWhpYmVybmF0ZSB7CiAgICAgICB1bml4X2xpc3RlbmVyIGltYXAtaGli ZXJuYXRlIHsKCiAgICAgICBXaGF0IHdlIGNhbiBkbyBtb3JlPwoKICAgICAgIEtSLAogICAgICAg Sm9yZGFuCgogICAgICAgT24gMjUgSnVuIDIwMjYsIGF0IDEyOjM0LCBUaW1vIFNpcmFpbmVuIDxb MjlddGltb0BzaXJhaW5lbi5jb20+IHdyb3RlOgoKICAgICAgIE9uIDI0LiBKdW4gMjAyNiwgYXQg MjEuMzQsIEpvcmRhbiBPc3RyZXYgdmlhIGRvdmVjb3QKICAgICAgIDxbMzBdZG92ZWNvdEBkb3Zl Y290Lm9yZz4gd3JvdGU6CgogICAgICAgSGksCiAgICAgICBJTUFQIGhpYmVybmF0aW9uIGNvbXBp bGVzIGFuZCBhdHRlbXB0cyB0byBydW4gb24gRnJlZUJTRCAxNS54CiAgICAgICAodGVzdGVkIHdp dGgKICAgICAgIERvdmVjb3QgMi40LjQgYW5kIEZyZWVCU0QgMTUuMSksIGJ1dCBmYWlscyBhdCBy dW50aW1lIHdpdGg6CiAgICAgICBwbGFpbgoKICAgICAgIGltYXAtaGliZXJuYXRlOiBFcnJvcjog Y29ubiB1bml4OmltYXAtaGliZXJuYXRlICh1aWQ9MTI1KTogRmFpbGVkCiAgICAgICB0byBwYXJz ZSBjbGllbnQgaW5wdXQ6IEludmFsaWQgcGVlcl9kZXZfbWFqb3IgdmFsdWU6CiAgICAgICAxODQ0 Njc0NDA3MzcwOTU1MTYxNQoKICAgICAgIEp1biAyNCAyMToyNzowOCBjbGFzc2ljIGRvdmVjb3Rb MzY4ODhdOiBpbWFwLWhpYmVybmF0ZTogRXJyb3I6CiAgICAgICBjb25uIHVuaXg6aW1hcC1oaWJl cm5hdGUgKHVpZD0xMjUpOiBGYWlsZWQgdG8gcGFyc2UgY2xpZW50IGlucHV0OgogICAgICAgSW52 YWxpZCBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTUKICAgICAgIEp1 biAyNCAyMToyNzowOCBjbGFzc2ljIGRvdmVjb3RbMzY4ODhdOgogICAgICAgaW1hcChbMzFdam9y ZGFuQG9zdHJlZmYuaW5mbyk8MzcxMjA+PEV4YVYvZ05WQWR0L0FBQUI+OiBFcnJvcjoKICAgICAg IENvdWxkbid0IGhpYmVybmF0ZSBpbWFwIGNsaWVudDogL3Zhci9ydW4vZG92ZWNvdC9pbWFwLWhp YmVybmF0ZQogICAgICAgcmV0dXJuZWQgZmFpbHVyZTogRmFpbGVkIHRvIHBhcnNlIGNsaWVudCBp bnB1dDogSW52YWxpZAogICAgICAgcGVlcl9kZXZfbWFqb3IgdmFsdWU6IDE4NDQ2NzQ0MDczNzA5 NTUxNjE1CgogICAgICAgLi4KCiAgICAgICAxLiBEaXNhYmxlIGhpYmVybmF0aW9uIGF0IGNvbXBp bGUgdGltZSBmb3Iga3F1ZXVlIHN5c3RlbXMsIG9yCgogICAgICAgSXQgd2FzIGFscmVhZHkgc3Vw cG9zZWQgdG8gYmUgZG9uZSwgYnV0IGxvb2tzIGxpa2UgdGhlcmUncyBhIGJ1Zy4KICAgICAgIENh biB5b3UgdmVyaWZ5IGlmIHRoaXMgd29ya3M/IDoKCiAgICAgICBkaWZmIC0tZ2l0IGEvY29uZmln dXJlLmFjIGIvY29uZmlndXJlLmFjCiAgICAgICBpbmRleCA5YmVhY2FhMjk5Li4wNGY5YzhlZGQ2 IDEwMDY0NAogICAgICAgLS0tIGEvY29uZmlndXJlLmFjCiAgICAgICArKysgYi9jb25maWd1cmUu YWMKICAgICAgIEBAIC0zNjMsNyArMzYzLDcgQEAgRE9WRUNPVF9UWVBFT0YKICAgICAgIERPVkVD T1RfSU9MT09QCiAgICAgICBET1ZFQ09UX05PVElGWQogICAgICAgQVNfQ0FTRSgKICAgICAgIC0g WyIkbm90aWZ5Il0sCiAgICAgICArIFsiJGhhdmVfbm90aWZ5Il0sCiAgICAgICBbbm9uZV0sIFtC VUlMRF9JTUFQX0hJQkVSTkFURT0wXSwKICAgICAgIFtrcXVldWVdLCBbQlVJTERfSU1BUF9ISUJF Uk5BVEU9MF0sCiAgICAgICBbQlVJTERfSU1BUF9ISUJFUk5BVEU9MV0pCiAgICAgICBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogICAgICAgZG92ZWNvdCBt YWlsaW5nIGxpc3QgLS0gWzMyXWRvdmVjb3RAZG92ZWNvdC5vcmcKICAgICAgIFRvIHVuc3Vic2Ny aWJlIHNlbmQgYW4gZW1haWwgdG8gWzMzXWRvdmVjb3QtbGVhdmVAZG92ZWNvdC5vcmcKClJlZmVy ZW5jZXMKCiAgIFZpc2libGUgbGlua3MKICAgMS4gbWFpbHRvOmRvdmVjb3RAZG92ZWNvdC5vcmcK ICAgMi4gbWFpbHRvOmpvcmRhbkBvc3RyZWZmLmluZm8KICAgMy4gbWFpbHRvOmpvcmRhbkBvc3Ry ZWZmLmluZm8KICAgNC4gbWFpbHRvOmpvcmRhbkBvc3RyZWZmLmluZm8KICAgNS4gbWFpbHRvOmpv cmRhbkBvc3RyZWZmLmluZm8KICAgNi4gbWFpbHRvOmpvcmRhbkBvc3RyZWZmLmluZm8KICAgNy4g bWFpbHRvOmpvcmRhbkBvc3RyZWZmLmluZm8KICAgOC4gbWFpbHRvOmpvcmRhbkBvc3RyZWZmLmlu Zm8KICAgOS4gbWFpbHRvOmpvcmRhbkBvc3RyZWZmLmluZm8KICAxMC4gbWFpbHRvOmpvcmRhbkBv c3RyZWZmLmluZm8KICAxMS4gbWFpbHRvOmpvcmRhbkBvc3RyZWZmLmluZm8KICAxMi4gbWFpbHRv OmpvcmRhbkBvc3RyZWZmLmluZm8KICAxMy4gbWFpbHRvOmpvcmRhbkBvc3RyZWZmLmluZm8KICAx NC4gbWFpbHRvOnRpbW9Ac2lyYWluZW4uY29tCiAgMTUuIG1haWx0bzpkb3ZlY290QGRvdmVjb3Qu b3JnCiAgMTYuIG1haWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAgMTcuIG1haWx0bzpqb3JkYW5A b3N0cmVmZi5pbmZvCiAgMTguIG1haWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAgMTkuIG1haWx0 bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAgMjAuIG1haWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAg MjEuIG1haWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAgMjIuIG1haWx0bzpqb3JkYW5Ab3N0cmVm Zi5pbmZvCiAgMjMuIG1haWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAgMjQuIG1haWx0bzpqb3Jk YW5Ab3N0cmVmZi5pbmZvCiAgMjUuIG1haWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAgMjYuIG1h aWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAgMjcuIG1haWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZv CiAgMjguIG1haWx0bzpqb3JkYW5Ab3N0cmVmZi5pbmZvCiAgMjkuIG1haWx0bzp0aW1vQHNpcmFp bmVuLmNvbQogIDMwLiBtYWlsdG86ZG92ZWNvdEBkb3ZlY290Lm9yZwogIDMxLiBtYWlsdG86am9y ZGFuQG9zdHJlZmYuaW5mbwogIDMyLiBtYWlsdG86ZG92ZWNvdEBkb3ZlY290Lm9yZwogIDMzLiBt YWlsdG86ZG92ZWNvdC1sZWF2ZUBkb3ZlY290Lm9yZwo= --Apple-Mail=_96BE7FDC-D129-4ACD-BE4B-7EA4AD9D3199-- --===============9086490527502969248== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ dovecot mailing list -- [email protected] To unsubscribe send an email to [email protected] --===============9086490527502969248==--