codex 1.8.9__tar.gz → 1.8.11__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of codex might be problematic. Click here for more details.

Files changed (1415) hide show
  1. codex-1.8.11/PKG-INFO +592 -0
  2. codex-1.8.11/codex/librarian/bookmark/latest_version.py +61 -0
  3. codex-1.8.11/codex/librarian/librariand.py +200 -0
  4. codex-1.8.11/codex/librarian/restarter/restarter.py +52 -0
  5. codex-1.8.11/codex/librarian/scribe/importer/init.py +338 -0
  6. codex-1.8.11/codex/librarian/scribe/importer/link/many_to_many.py +90 -0
  7. codex-1.8.11/codex/librarian/scribe/importer/link/prepare.py +135 -0
  8. codex-1.8.11/codex/librarian/scribe/importer/search/sync_m2m.py +91 -0
  9. codex-1.8.11/codex/librarian/scribe/importer/search/update.py +217 -0
  10. codex-1.8.11/codex/librarian/scribe/janitor/adopt_folders.py +76 -0
  11. codex-1.8.11/codex/librarian/scribe/janitor/integrity.py +370 -0
  12. codex-1.8.11/codex/librarian/scribe/janitor/update.py +88 -0
  13. codex-1.8.11/codex/librarian/scribe/lazy_importer.py +47 -0
  14. codex-1.8.11/codex/librarian/scribe/search/optimize.py +27 -0
  15. codex-1.8.11/codex/librarian/scribe/timestamp_update.py +131 -0
  16. codex-1.8.11/codex/librarian/worker.py +59 -0
  17. codex-1.8.11/codex/static_root/assets/VCheckbox-yJKLwTHL.c95ec3575cfc.js +1 -0
  18. codex-1.8.11/codex/static_root/assets/VCheckbox-yJKLwTHL.c95ec3575cfc.js.br +0 -0
  19. codex-1.8.11/codex/static_root/assets/VCheckbox-yJKLwTHL.c95ec3575cfc.js.gz +0 -0
  20. codex-1.8.11/codex/static_root/assets/VCheckbox-yJKLwTHL.js +1 -0
  21. codex-1.8.11/codex/static_root/assets/VCheckbox-yJKLwTHL.js.br +0 -0
  22. codex-1.8.11/codex/static_root/assets/VCheckbox-yJKLwTHL.js.gz +0 -0
  23. codex-1.8.11/codex/static_root/assets/VCheckboxBtn-dB9xmqwr.5769d67bb7f2.js +1 -0
  24. codex-1.8.11/codex/static_root/assets/VCheckboxBtn-dB9xmqwr.5769d67bb7f2.js.br +0 -0
  25. codex-1.8.11/codex/static_root/assets/VCheckboxBtn-dB9xmqwr.5769d67bb7f2.js.gz +0 -0
  26. codex-1.8.11/codex/static_root/assets/VCheckboxBtn-dB9xmqwr.js +1 -0
  27. codex-1.8.11/codex/static_root/assets/VCheckboxBtn-dB9xmqwr.js.br +0 -0
  28. codex-1.8.11/codex/static_root/assets/VCheckboxBtn-dB9xmqwr.js.gz +0 -0
  29. codex-1.8.11/codex/static_root/assets/VCombobox-DOGFHYmN.88d1f3799dc6.js +1 -0
  30. codex-1.8.11/codex/static_root/assets/VCombobox-DOGFHYmN.88d1f3799dc6.js.br +0 -0
  31. codex-1.8.11/codex/static_root/assets/VCombobox-DOGFHYmN.88d1f3799dc6.js.gz +0 -0
  32. codex-1.8.11/codex/static_root/assets/VCombobox-DOGFHYmN.js +1 -0
  33. codex-1.8.11/codex/static_root/assets/VCombobox-DOGFHYmN.js.br +0 -0
  34. codex-1.8.11/codex/static_root/assets/VCombobox-DOGFHYmN.js.gz +0 -0
  35. codex-1.8.11/codex/static_root/assets/VDialog-DhWYW70x.d777b17f7fda.js +1 -0
  36. codex-1.8.11/codex/static_root/assets/VDialog-DhWYW70x.d777b17f7fda.js.br +0 -0
  37. codex-1.8.11/codex/static_root/assets/VDialog-DhWYW70x.d777b17f7fda.js.gz +0 -0
  38. codex-1.8.11/codex/static_root/assets/VDialog-DhWYW70x.js +1 -0
  39. codex-1.8.11/codex/static_root/assets/VDialog-DhWYW70x.js.br +0 -0
  40. codex-1.8.11/codex/static_root/assets/VDialog-DhWYW70x.js.gz +0 -0
  41. codex-1.8.11/codex/static_root/assets/VDivider-D5g1AzdV.2e3bd93fadb2.js +1 -0
  42. codex-1.8.11/codex/static_root/assets/VDivider-D5g1AzdV.2e3bd93fadb2.js.br +0 -0
  43. codex-1.8.11/codex/static_root/assets/VDivider-D5g1AzdV.2e3bd93fadb2.js.gz +0 -0
  44. codex-1.8.11/codex/static_root/assets/VDivider-D5g1AzdV.js +1 -0
  45. codex-1.8.11/codex/static_root/assets/VDivider-D5g1AzdV.js.br +0 -0
  46. codex-1.8.11/codex/static_root/assets/VDivider-D5g1AzdV.js.gz +0 -0
  47. codex-1.8.11/codex/static_root/assets/VExpansionPanels-DGwHreC2.f97c0ffe01ac.js +1 -0
  48. codex-1.8.11/codex/static_root/assets/VExpansionPanels-DGwHreC2.f97c0ffe01ac.js.br +0 -0
  49. codex-1.8.11/codex/static_root/assets/VExpansionPanels-DGwHreC2.f97c0ffe01ac.js.gz +0 -0
  50. codex-1.8.11/codex/static_root/assets/VExpansionPanels-DGwHreC2.js +1 -0
  51. codex-1.8.11/codex/static_root/assets/VExpansionPanels-DGwHreC2.js.br +0 -0
  52. codex-1.8.11/codex/static_root/assets/VExpansionPanels-DGwHreC2.js.gz +0 -0
  53. codex-1.8.11/codex/static_root/assets/VForm-bSlWOF1d.b3fd7d7fe68b.js +1 -0
  54. codex-1.8.11/codex/static_root/assets/VForm-bSlWOF1d.b3fd7d7fe68b.js.br +0 -0
  55. codex-1.8.11/codex/static_root/assets/VForm-bSlWOF1d.b3fd7d7fe68b.js.gz +0 -0
  56. codex-1.8.11/codex/static_root/assets/VForm-bSlWOF1d.js +1 -0
  57. codex-1.8.11/codex/static_root/assets/VForm-bSlWOF1d.js.br +0 -0
  58. codex-1.8.11/codex/static_root/assets/VForm-bSlWOF1d.js.gz +0 -0
  59. codex-1.8.11/codex/static_root/assets/VRadioGroup-Ctc2D2fE.72e42da00617.js +1 -0
  60. codex-1.8.11/codex/static_root/assets/VRadioGroup-Ctc2D2fE.72e42da00617.js.br +0 -0
  61. codex-1.8.11/codex/static_root/assets/VRadioGroup-Ctc2D2fE.72e42da00617.js.gz +0 -0
  62. codex-1.8.11/codex/static_root/assets/VRadioGroup-Ctc2D2fE.js +1 -0
  63. codex-1.8.11/codex/static_root/assets/VRadioGroup-Ctc2D2fE.js.br +0 -0
  64. codex-1.8.11/codex/static_root/assets/VRadioGroup-Ctc2D2fE.js.gz +0 -0
  65. codex-1.8.11/codex/static_root/assets/VSelect-CHbtIx-x.52ecf0514711.js +1 -0
  66. codex-1.8.11/codex/static_root/assets/VSelect-CHbtIx-x.52ecf0514711.js.br +0 -0
  67. codex-1.8.11/codex/static_root/assets/VSelect-CHbtIx-x.52ecf0514711.js.gz +0 -0
  68. codex-1.8.11/codex/static_root/assets/VSelect-CHbtIx-x.js +1 -0
  69. codex-1.8.11/codex/static_root/assets/VSelect-CHbtIx-x.js.br +0 -0
  70. codex-1.8.11/codex/static_root/assets/VSelect-CHbtIx-x.js.gz +0 -0
  71. codex-1.8.11/codex/static_root/assets/VSelectionControl-BI__4iTT.fa63635e3cbb.js +1 -0
  72. codex-1.8.11/codex/static_root/assets/VSelectionControl-BI__4iTT.fa63635e3cbb.js.br +0 -0
  73. codex-1.8.11/codex/static_root/assets/VSelectionControl-BI__4iTT.fa63635e3cbb.js.gz +0 -0
  74. codex-1.8.11/codex/static_root/assets/VSelectionControl-BI__4iTT.js +1 -0
  75. codex-1.8.11/codex/static_root/assets/VSelectionControl-BI__4iTT.js.br +0 -0
  76. codex-1.8.11/codex/static_root/assets/VSelectionControl-BI__4iTT.js.gz +0 -0
  77. codex-1.8.11/codex/static_root/assets/VTable-CqSQnAGe.686a17da355c.js +1 -0
  78. codex-1.8.11/codex/static_root/assets/VTable-CqSQnAGe.686a17da355c.js.br +0 -0
  79. codex-1.8.11/codex/static_root/assets/VTable-CqSQnAGe.686a17da355c.js.gz +0 -0
  80. codex-1.8.11/codex/static_root/assets/VTable-CqSQnAGe.js +1 -0
  81. codex-1.8.11/codex/static_root/assets/VTable-CqSQnAGe.js.br +0 -0
  82. codex-1.8.11/codex/static_root/assets/VTable-CqSQnAGe.js.gz +0 -0
  83. codex-1.8.11/codex/static_root/assets/VWindowItem-D5CtN0yj.c8b34951a8de.js +1 -0
  84. codex-1.8.11/codex/static_root/assets/VWindowItem-D5CtN0yj.c8b34951a8de.js.br +0 -0
  85. codex-1.8.11/codex/static_root/assets/VWindowItem-D5CtN0yj.c8b34951a8de.js.gz +0 -0
  86. codex-1.8.11/codex/static_root/assets/VWindowItem-D5CtN0yj.js +1 -0
  87. codex-1.8.11/codex/static_root/assets/VWindowItem-D5CtN0yj.js.br +0 -0
  88. codex-1.8.11/codex/static_root/assets/VWindowItem-D5CtN0yj.js.gz +0 -0
  89. codex-1.8.11/codex/static_root/assets/admin-CzajilVj.133c236f9c39.js +1 -0
  90. codex-1.8.11/codex/static_root/assets/admin-CzajilVj.133c236f9c39.js.br +0 -0
  91. codex-1.8.11/codex/static_root/assets/admin-CzajilVj.133c236f9c39.js.gz +0 -0
  92. codex-1.8.11/codex/static_root/assets/admin-CzajilVj.js +1 -0
  93. codex-1.8.11/codex/static_root/assets/admin-CzajilVj.js.br +0 -0
  94. codex-1.8.11/codex/static_root/assets/admin-CzajilVj.js.gz +0 -0
  95. codex-1.8.11/codex/static_root/assets/admin-D5DpivSr.0f7dadb50319.js +1 -0
  96. codex-1.8.11/codex/static_root/assets/admin-D5DpivSr.0f7dadb50319.js.br +0 -0
  97. codex-1.8.11/codex/static_root/assets/admin-D5DpivSr.0f7dadb50319.js.gz +0 -0
  98. codex-1.8.11/codex/static_root/assets/admin-D5DpivSr.js +1 -0
  99. codex-1.8.11/codex/static_root/assets/admin-D5DpivSr.js.br +0 -0
  100. codex-1.8.11/codex/static_root/assets/admin-D5DpivSr.js.gz +0 -0
  101. codex-1.8.11/codex/static_root/assets/admin-menu-MN0IHt2k.7ee7c492bfa2.js +1 -0
  102. codex-1.8.11/codex/static_root/assets/admin-menu-MN0IHt2k.7ee7c492bfa2.js.br +0 -0
  103. codex-1.8.11/codex/static_root/assets/admin-menu-MN0IHt2k.7ee7c492bfa2.js.gz +0 -0
  104. codex-1.8.11/codex/static_root/assets/admin-menu-MN0IHt2k.js +1 -0
  105. codex-1.8.11/codex/static_root/assets/admin-menu-MN0IHt2k.js.br +0 -0
  106. codex-1.8.11/codex/static_root/assets/admin-menu-MN0IHt2k.js.gz +0 -0
  107. codex-1.8.11/codex/static_root/assets/admin-settings-button-progress-CwHb2532.1011e5de0a37.js +1 -0
  108. codex-1.8.11/codex/static_root/assets/admin-settings-button-progress-CwHb2532.1011e5de0a37.js.br +1 -0
  109. codex-1.8.11/codex/static_root/assets/admin-settings-button-progress-CwHb2532.1011e5de0a37.js.gz +0 -0
  110. codex-1.8.11/codex/static_root/assets/admin-settings-button-progress-CwHb2532.js +1 -0
  111. codex-1.8.11/codex/static_root/assets/admin-settings-button-progress-CwHb2532.js.br +1 -0
  112. codex-1.8.11/codex/static_root/assets/admin-settings-button-progress-CwHb2532.js.gz +0 -0
  113. codex-1.8.11/codex/static_root/assets/browser-CS6VSg0_.9a6e8eda0520.css +1 -0
  114. codex-1.8.11/codex/static_root/assets/browser-CS6VSg0_.9a6e8eda0520.css.br +0 -0
  115. codex-1.8.11/codex/static_root/assets/browser-CS6VSg0_.9a6e8eda0520.css.gz +0 -0
  116. codex-1.8.11/codex/static_root/assets/browser-CS6VSg0_.css +1 -0
  117. codex-1.8.11/codex/static_root/assets/browser-CS6VSg0_.css.br +0 -0
  118. codex-1.8.11/codex/static_root/assets/browser-CS6VSg0_.css.gz +0 -0
  119. codex-1.8.11/codex/static_root/assets/browser-CpLIkclU.9af33deffa94.js +1 -0
  120. codex-1.8.11/codex/static_root/assets/browser-CpLIkclU.9af33deffa94.js.br +0 -0
  121. codex-1.8.11/codex/static_root/assets/browser-CpLIkclU.9af33deffa94.js.gz +0 -0
  122. codex-1.8.11/codex/static_root/assets/browser-CpLIkclU.js +1 -0
  123. codex-1.8.11/codex/static_root/assets/browser-CpLIkclU.js.br +0 -0
  124. codex-1.8.11/codex/static_root/assets/browser-CpLIkclU.js.gz +0 -0
  125. codex-1.8.11/codex/static_root/assets/change-password-dialog-C2JNp2wz.93755e10c75c.js +1 -0
  126. codex-1.8.11/codex/static_root/assets/change-password-dialog-C2JNp2wz.93755e10c75c.js.br +0 -0
  127. codex-1.8.11/codex/static_root/assets/change-password-dialog-C2JNp2wz.93755e10c75c.js.gz +0 -0
  128. codex-1.8.11/codex/static_root/assets/change-password-dialog-C2JNp2wz.js +1 -0
  129. codex-1.8.11/codex/static_root/assets/change-password-dialog-C2JNp2wz.js.br +0 -0
  130. codex-1.8.11/codex/static_root/assets/change-password-dialog-C2JNp2wz.js.gz +0 -0
  131. codex-1.8.11/codex/static_root/assets/confirm-dialog-g9rA18o3.cbfb51c3f0ba.js +1 -0
  132. codex-1.8.11/codex/static_root/assets/confirm-dialog-g9rA18o3.cbfb51c3f0ba.js.br +0 -0
  133. codex-1.8.11/codex/static_root/assets/confirm-dialog-g9rA18o3.cbfb51c3f0ba.js.gz +0 -0
  134. codex-1.8.11/codex/static_root/assets/confirm-dialog-g9rA18o3.js +1 -0
  135. codex-1.8.11/codex/static_root/assets/confirm-dialog-g9rA18o3.js.br +0 -0
  136. codex-1.8.11/codex/static_root/assets/confirm-dialog-g9rA18o3.js.gz +0 -0
  137. codex-1.8.11/codex/static_root/assets/datetime-column-B6pIWef2.59b5ccbe4a21.js +1 -0
  138. codex-1.8.11/codex/static_root/assets/datetime-column-B6pIWef2.59b5ccbe4a21.js.br +3 -0
  139. codex-1.8.11/codex/static_root/assets/datetime-column-B6pIWef2.59b5ccbe4a21.js.gz +0 -0
  140. codex-1.8.11/codex/static_root/assets/datetime-column-B6pIWef2.js +1 -0
  141. codex-1.8.11/codex/static_root/assets/datetime-column-B6pIWef2.js.br +3 -0
  142. codex-1.8.11/codex/static_root/assets/datetime-column-B6pIWef2.js.gz +0 -0
  143. codex-1.8.11/codex/static_root/assets/filter-BOz2i2LB.be5d6981c97b.js +1 -0
  144. codex-1.8.11/codex/static_root/assets/filter-BOz2i2LB.be5d6981c97b.js.br +0 -0
  145. codex-1.8.11/codex/static_root/assets/filter-BOz2i2LB.be5d6981c97b.js.gz +0 -0
  146. codex-1.8.11/codex/static_root/assets/filter-BOz2i2LB.js +1 -0
  147. codex-1.8.11/codex/static_root/assets/filter-BOz2i2LB.js.br +0 -0
  148. codex-1.8.11/codex/static_root/assets/filter-BOz2i2LB.js.gz +0 -0
  149. codex-1.8.11/codex/static_root/assets/flag-tab-EZpGBixK.e188cc5b4791.js +1 -0
  150. codex-1.8.11/codex/static_root/assets/flag-tab-EZpGBixK.e188cc5b4791.js.br +0 -0
  151. codex-1.8.11/codex/static_root/assets/flag-tab-EZpGBixK.e188cc5b4791.js.gz +0 -0
  152. codex-1.8.11/codex/static_root/assets/flag-tab-EZpGBixK.js +1 -0
  153. codex-1.8.11/codex/static_root/assets/flag-tab-EZpGBixK.js.br +0 -0
  154. codex-1.8.11/codex/static_root/assets/flag-tab-EZpGBixK.js.gz +0 -0
  155. codex-1.8.11/codex/static_root/assets/forwardRefs-BotGMO80.9b4b85f9c240.js +1 -0
  156. codex-1.8.11/codex/static_root/assets/forwardRefs-BotGMO80.9b4b85f9c240.js.br +0 -0
  157. codex-1.8.11/codex/static_root/assets/forwardRefs-BotGMO80.9b4b85f9c240.js.gz +0 -0
  158. codex-1.8.11/codex/static_root/assets/forwardRefs-BotGMO80.js +1 -0
  159. codex-1.8.11/codex/static_root/assets/forwardRefs-BotGMO80.js.br +0 -0
  160. codex-1.8.11/codex/static_root/assets/forwardRefs-BotGMO80.js.gz +0 -0
  161. codex-1.8.11/codex/static_root/assets/group-tab-46Ic9z7f.ef96094e5106.js +1 -0
  162. codex-1.8.11/codex/static_root/assets/group-tab-46Ic9z7f.ef96094e5106.js.br +0 -0
  163. codex-1.8.11/codex/static_root/assets/group-tab-46Ic9z7f.ef96094e5106.js.gz +0 -0
  164. codex-1.8.11/codex/static_root/assets/group-tab-46Ic9z7f.js +1 -0
  165. codex-1.8.11/codex/static_root/assets/group-tab-46Ic9z7f.js.br +0 -0
  166. codex-1.8.11/codex/static_root/assets/group-tab-46Ic9z7f.js.gz +0 -0
  167. codex-1.8.11/codex/static_root/assets/http-error-BcTquFdz.9667604bb28b.js +1 -0
  168. codex-1.8.11/codex/static_root/assets/http-error-BcTquFdz.9667604bb28b.js.br +0 -0
  169. codex-1.8.11/codex/static_root/assets/http-error-BcTquFdz.9667604bb28b.js.gz +0 -0
  170. codex-1.8.11/codex/static_root/assets/http-error-BcTquFdz.js +1 -0
  171. codex-1.8.11/codex/static_root/assets/http-error-BcTquFdz.js.br +0 -0
  172. codex-1.8.11/codex/static_root/assets/http-error-BcTquFdz.js.gz +0 -0
  173. codex-1.8.11/codex/static_root/assets/index-DDX_hxwV.4dbe80b8783c.js +1 -0
  174. codex-1.8.11/codex/static_root/assets/index-DDX_hxwV.4dbe80b8783c.js.br +0 -0
  175. codex-1.8.11/codex/static_root/assets/index-DDX_hxwV.4dbe80b8783c.js.gz +0 -0
  176. codex-1.8.11/codex/static_root/assets/index-DDX_hxwV.js +1 -0
  177. codex-1.8.11/codex/static_root/assets/index-DDX_hxwV.js.br +0 -0
  178. codex-1.8.11/codex/static_root/assets/index-DDX_hxwV.js.gz +0 -0
  179. codex-1.8.11/codex/static_root/assets/library-tab-2DEjDVUD.f23bcd6e7e25.js +1 -0
  180. codex-1.8.11/codex/static_root/assets/library-tab-2DEjDVUD.f23bcd6e7e25.js.br +0 -0
  181. codex-1.8.11/codex/static_root/assets/library-tab-2DEjDVUD.f23bcd6e7e25.js.gz +0 -0
  182. codex-1.8.11/codex/static_root/assets/library-tab-2DEjDVUD.js +1 -0
  183. codex-1.8.11/codex/static_root/assets/library-tab-2DEjDVUD.js.br +0 -0
  184. codex-1.8.11/codex/static_root/assets/library-tab-2DEjDVUD.js.gz +0 -0
  185. codex-1.8.11/codex/static_root/assets/main-CdKoY_uF.e9128a1200b4.js +39 -0
  186. codex-1.8.11/codex/static_root/assets/main-CdKoY_uF.e9128a1200b4.js.br +0 -0
  187. codex-1.8.11/codex/static_root/assets/main-CdKoY_uF.e9128a1200b4.js.gz +0 -0
  188. codex-1.8.11/codex/static_root/assets/main-CdKoY_uF.js +39 -0
  189. codex-1.8.11/codex/static_root/assets/main-CdKoY_uF.js.br +0 -0
  190. codex-1.8.11/codex/static_root/assets/main-CdKoY_uF.js.gz +0 -0
  191. codex-1.8.11/codex/static_root/assets/pager-full-pdf-D928P3tE.257c395fcdf3.js +1 -0
  192. codex-1.8.11/codex/static_root/assets/pager-full-pdf-D928P3tE.257c395fcdf3.js.br +0 -0
  193. codex-1.8.11/codex/static_root/assets/pager-full-pdf-D928P3tE.257c395fcdf3.js.gz +0 -0
  194. codex-1.8.11/codex/static_root/assets/pager-full-pdf-D928P3tE.js +1 -0
  195. codex-1.8.11/codex/static_root/assets/pager-full-pdf-D928P3tE.js.br +0 -0
  196. codex-1.8.11/codex/static_root/assets/pager-full-pdf-D928P3tE.js.gz +0 -0
  197. codex-1.8.11/codex/static_root/assets/pagination-toolbar-YZ6fysEV.3064a17ac385.js +1 -0
  198. codex-1.8.11/codex/static_root/assets/pagination-toolbar-YZ6fysEV.3064a17ac385.js.br +0 -0
  199. codex-1.8.11/codex/static_root/assets/pagination-toolbar-YZ6fysEV.3064a17ac385.js.gz +0 -0
  200. codex-1.8.11/codex/static_root/assets/pagination-toolbar-YZ6fysEV.js +1 -0
  201. codex-1.8.11/codex/static_root/assets/pagination-toolbar-YZ6fysEV.js.br +0 -0
  202. codex-1.8.11/codex/static_root/assets/pagination-toolbar-YZ6fysEV.js.gz +0 -0
  203. codex-1.8.11/codex/static_root/assets/pdf-doc-CckhLi0L.fb5b866531f4.js +372 -0
  204. codex-1.8.11/codex/static_root/assets/pdf-doc-CckhLi0L.fb5b866531f4.js.br +0 -0
  205. codex-1.8.11/codex/static_root/assets/pdf-doc-CckhLi0L.fb5b866531f4.js.gz +0 -0
  206. codex-1.8.11/codex/static_root/assets/pdf-doc-CckhLi0L.js +372 -0
  207. codex-1.8.11/codex/static_root/assets/pdf-doc-CckhLi0L.js.br +0 -0
  208. codex-1.8.11/codex/static_root/assets/pdf-doc-CckhLi0L.js.gz +0 -0
  209. codex-1.8.11/codex/static_root/assets/reader-C4ZyLa6d.26c257a96237.js +2 -0
  210. codex-1.8.11/codex/static_root/assets/reader-C4ZyLa6d.26c257a96237.js.br +0 -0
  211. codex-1.8.11/codex/static_root/assets/reader-C4ZyLa6d.26c257a96237.js.gz +0 -0
  212. codex-1.8.11/codex/static_root/assets/reader-C4ZyLa6d.js +2 -0
  213. codex-1.8.11/codex/static_root/assets/reader-C4ZyLa6d.js.br +0 -0
  214. codex-1.8.11/codex/static_root/assets/reader-C4ZyLa6d.js.gz +0 -0
  215. codex-1.8.11/codex/static_root/assets/relation-chips-B7Qn-kfx.a8ee6d66d03e.js +1 -0
  216. codex-1.8.11/codex/static_root/assets/relation-chips-B7Qn-kfx.a8ee6d66d03e.js.br +0 -0
  217. codex-1.8.11/codex/static_root/assets/relation-chips-B7Qn-kfx.a8ee6d66d03e.js.gz +0 -0
  218. codex-1.8.11/codex/static_root/assets/relation-chips-B7Qn-kfx.js +1 -0
  219. codex-1.8.11/codex/static_root/assets/relation-chips-B7Qn-kfx.js.br +0 -0
  220. codex-1.8.11/codex/static_root/assets/relation-chips-B7Qn-kfx.js.gz +0 -0
  221. codex-1.8.11/codex/static_root/assets/settings-drawer-f_0NPvmu.3a94ab493b85.js +2 -0
  222. codex-1.8.11/codex/static_root/assets/settings-drawer-f_0NPvmu.3a94ab493b85.js.br +0 -0
  223. codex-1.8.11/codex/static_root/assets/settings-drawer-f_0NPvmu.3a94ab493b85.js.gz +0 -0
  224. codex-1.8.11/codex/static_root/assets/settings-drawer-f_0NPvmu.js +2 -0
  225. codex-1.8.11/codex/static_root/assets/settings-drawer-f_0NPvmu.js.br +0 -0
  226. codex-1.8.11/codex/static_root/assets/settings-drawer-f_0NPvmu.js.gz +0 -0
  227. codex-1.8.11/codex/static_root/assets/ssrBoot-Ehaw9KYw.f5a5d2d8dc03.js +1 -0
  228. codex-1.8.11/codex/static_root/assets/ssrBoot-Ehaw9KYw.f5a5d2d8dc03.js.br +0 -0
  229. codex-1.8.11/codex/static_root/assets/ssrBoot-Ehaw9KYw.f5a5d2d8dc03.js.gz +0 -0
  230. codex-1.8.11/codex/static_root/assets/ssrBoot-Ehaw9KYw.js +1 -0
  231. codex-1.8.11/codex/static_root/assets/ssrBoot-Ehaw9KYw.js.br +0 -0
  232. codex-1.8.11/codex/static_root/assets/ssrBoot-Ehaw9KYw.js.gz +0 -0
  233. codex-1.8.11/codex/static_root/assets/stats-tab-73FDJsc7.f45ecc58f474.js +1 -0
  234. codex-1.8.11/codex/static_root/assets/stats-tab-73FDJsc7.f45ecc58f474.js.br +0 -0
  235. codex-1.8.11/codex/static_root/assets/stats-tab-73FDJsc7.f45ecc58f474.js.gz +0 -0
  236. codex-1.8.11/codex/static_root/assets/stats-tab-73FDJsc7.js +1 -0
  237. codex-1.8.11/codex/static_root/assets/stats-tab-73FDJsc7.js.br +0 -0
  238. codex-1.8.11/codex/static_root/assets/stats-tab-73FDJsc7.js.gz +0 -0
  239. codex-1.8.11/codex/static_root/assets/task-tab-BVYsZcvv.46b9863140a4.js +1 -0
  240. codex-1.8.11/codex/static_root/assets/task-tab-BVYsZcvv.46b9863140a4.js.br +0 -0
  241. codex-1.8.11/codex/static_root/assets/task-tab-BVYsZcvv.46b9863140a4.js.gz +0 -0
  242. codex-1.8.11/codex/static_root/assets/task-tab-BVYsZcvv.js +1 -0
  243. codex-1.8.11/codex/static_root/assets/task-tab-BVYsZcvv.js.br +0 -0
  244. codex-1.8.11/codex/static_root/assets/task-tab-BVYsZcvv.js.gz +0 -0
  245. codex-1.8.11/codex/static_root/assets/unauthorized-MOc4QcAg.96154ead3d95.js +1 -0
  246. codex-1.8.11/codex/static_root/assets/unauthorized-MOc4QcAg.96154ead3d95.js.br +0 -0
  247. codex-1.8.11/codex/static_root/assets/unauthorized-MOc4QcAg.96154ead3d95.js.gz +0 -0
  248. codex-1.8.11/codex/static_root/assets/unauthorized-MOc4QcAg.js +1 -0
  249. codex-1.8.11/codex/static_root/assets/unauthorized-MOc4QcAg.js.br +0 -0
  250. codex-1.8.11/codex/static_root/assets/unauthorized-MOc4QcAg.js.gz +0 -0
  251. codex-1.8.11/codex/static_root/assets/user-tab-D6T6AHAf.31cbb86e18ed.js +1 -0
  252. codex-1.8.11/codex/static_root/assets/user-tab-D6T6AHAf.31cbb86e18ed.js.br +0 -0
  253. codex-1.8.11/codex/static_root/assets/user-tab-D6T6AHAf.31cbb86e18ed.js.gz +0 -0
  254. codex-1.8.11/codex/static_root/assets/user-tab-D6T6AHAf.js +1 -0
  255. codex-1.8.11/codex/static_root/assets/user-tab-D6T6AHAf.js.br +0 -0
  256. codex-1.8.11/codex/static_root/assets/user-tab-D6T6AHAf.js.gz +0 -0
  257. codex-1.8.11/codex/static_root/manifest.c633402500de.json +760 -0
  258. codex-1.8.11/codex/static_root/manifest.c633402500de.json.br +0 -0
  259. codex-1.8.11/codex/static_root/manifest.c633402500de.json.gz +0 -0
  260. codex-1.8.11/codex/static_root/manifest.json +760 -0
  261. codex-1.8.11/codex/static_root/manifest.json.br +0 -0
  262. codex-1.8.11/codex/static_root/manifest.json.gz +0 -0
  263. codex-1.8.11/codex/static_root/staticfiles.json +1 -0
  264. codex-1.8.11/codex/static_src/img/.picopt_treestamps.yaml +19 -0
  265. codex-1.8.11/pyproject.toml +394 -0
  266. codex-1.8.11/tests/importer/test_basic.py +880 -0
  267. codex-1.8.11/tests/importer/test_update_all.py +772 -0
  268. codex-1.8.11/tests/importer/test_update_none.py +165 -0
  269. codex-1.8.9/PKG-INFO +0 -592
  270. codex-1.8.9/codex/librarian/bookmark/latest_version.py +0 -65
  271. codex-1.8.9/codex/librarian/librariand.py +0 -198
  272. codex-1.8.9/codex/librarian/restarter/restarter.py +0 -55
  273. codex-1.8.9/codex/librarian/scribe/importer/init.py +0 -338
  274. codex-1.8.9/codex/librarian/scribe/importer/link/many_to_many.py +0 -89
  275. codex-1.8.9/codex/librarian/scribe/importer/link/prepare.py +0 -137
  276. codex-1.8.9/codex/librarian/scribe/importer/search/sync_m2m.py +0 -90
  277. codex-1.8.9/codex/librarian/scribe/importer/search/update.py +0 -215
  278. codex-1.8.9/codex/librarian/scribe/janitor/adopt_folders.py +0 -81
  279. codex-1.8.9/codex/librarian/scribe/janitor/integrity.py +0 -375
  280. codex-1.8.9/codex/librarian/scribe/janitor/update.py +0 -88
  281. codex-1.8.9/codex/librarian/scribe/lazy_importer.py +0 -51
  282. codex-1.8.9/codex/librarian/scribe/search/optimize.py +0 -30
  283. codex-1.8.9/codex/librarian/scribe/timestamp_update.py +0 -135
  284. codex-1.8.9/codex/librarian/worker.py +0 -32
  285. codex-1.8.9/codex/static_root/assets/VCheckbox-BI6iNIZR.0d8e2dbdeb09.js +0 -1
  286. codex-1.8.9/codex/static_root/assets/VCheckbox-BI6iNIZR.0d8e2dbdeb09.js.br +0 -0
  287. codex-1.8.9/codex/static_root/assets/VCheckbox-BI6iNIZR.0d8e2dbdeb09.js.gz +0 -0
  288. codex-1.8.9/codex/static_root/assets/VCheckbox-BI6iNIZR.js +0 -1
  289. codex-1.8.9/codex/static_root/assets/VCheckbox-BI6iNIZR.js.br +0 -0
  290. codex-1.8.9/codex/static_root/assets/VCheckbox-BI6iNIZR.js.gz +0 -0
  291. codex-1.8.9/codex/static_root/assets/VCheckboxBtn-D_jRtvPm.7d253b804bed.js +0 -1
  292. codex-1.8.9/codex/static_root/assets/VCheckboxBtn-D_jRtvPm.7d253b804bed.js.br +0 -0
  293. codex-1.8.9/codex/static_root/assets/VCheckboxBtn-D_jRtvPm.7d253b804bed.js.gz +0 -0
  294. codex-1.8.9/codex/static_root/assets/VCheckboxBtn-D_jRtvPm.js +0 -1
  295. codex-1.8.9/codex/static_root/assets/VCheckboxBtn-D_jRtvPm.js.br +0 -0
  296. codex-1.8.9/codex/static_root/assets/VCheckboxBtn-D_jRtvPm.js.gz +0 -0
  297. codex-1.8.9/codex/static_root/assets/VCombobox-lKOmP-Yq.85384eec8906.js +0 -1
  298. codex-1.8.9/codex/static_root/assets/VCombobox-lKOmP-Yq.85384eec8906.js.br +0 -0
  299. codex-1.8.9/codex/static_root/assets/VCombobox-lKOmP-Yq.85384eec8906.js.gz +0 -0
  300. codex-1.8.9/codex/static_root/assets/VCombobox-lKOmP-Yq.js +0 -1
  301. codex-1.8.9/codex/static_root/assets/VCombobox-lKOmP-Yq.js.br +0 -0
  302. codex-1.8.9/codex/static_root/assets/VCombobox-lKOmP-Yq.js.gz +0 -0
  303. codex-1.8.9/codex/static_root/assets/VDialog-DwpHVF2o.f988d86f776c.js +0 -1
  304. codex-1.8.9/codex/static_root/assets/VDialog-DwpHVF2o.f988d86f776c.js.br +0 -0
  305. codex-1.8.9/codex/static_root/assets/VDialog-DwpHVF2o.f988d86f776c.js.gz +0 -0
  306. codex-1.8.9/codex/static_root/assets/VDialog-DwpHVF2o.js +0 -1
  307. codex-1.8.9/codex/static_root/assets/VDialog-DwpHVF2o.js.br +0 -0
  308. codex-1.8.9/codex/static_root/assets/VDialog-DwpHVF2o.js.gz +0 -0
  309. codex-1.8.9/codex/static_root/assets/VDivider-CGh9hHPI.8fac42f0d85c.js +0 -1
  310. codex-1.8.9/codex/static_root/assets/VDivider-CGh9hHPI.8fac42f0d85c.js.br +0 -0
  311. codex-1.8.9/codex/static_root/assets/VDivider-CGh9hHPI.8fac42f0d85c.js.gz +0 -0
  312. codex-1.8.9/codex/static_root/assets/VDivider-CGh9hHPI.js +0 -1
  313. codex-1.8.9/codex/static_root/assets/VDivider-CGh9hHPI.js.br +0 -0
  314. codex-1.8.9/codex/static_root/assets/VDivider-CGh9hHPI.js.gz +0 -0
  315. codex-1.8.9/codex/static_root/assets/VExpansionPanels-DFd72CFw.b232fadc31db.js +0 -1
  316. codex-1.8.9/codex/static_root/assets/VExpansionPanels-DFd72CFw.b232fadc31db.js.br +0 -0
  317. codex-1.8.9/codex/static_root/assets/VExpansionPanels-DFd72CFw.b232fadc31db.js.gz +0 -0
  318. codex-1.8.9/codex/static_root/assets/VExpansionPanels-DFd72CFw.js +0 -1
  319. codex-1.8.9/codex/static_root/assets/VExpansionPanels-DFd72CFw.js.br +0 -0
  320. codex-1.8.9/codex/static_root/assets/VExpansionPanels-DFd72CFw.js.gz +0 -0
  321. codex-1.8.9/codex/static_root/assets/VForm-C7W9kTbJ.02412068f578.js +0 -1
  322. codex-1.8.9/codex/static_root/assets/VForm-C7W9kTbJ.02412068f578.js.br +0 -0
  323. codex-1.8.9/codex/static_root/assets/VForm-C7W9kTbJ.02412068f578.js.gz +0 -0
  324. codex-1.8.9/codex/static_root/assets/VForm-C7W9kTbJ.js +0 -1
  325. codex-1.8.9/codex/static_root/assets/VForm-C7W9kTbJ.js.br +0 -0
  326. codex-1.8.9/codex/static_root/assets/VForm-C7W9kTbJ.js.gz +0 -0
  327. codex-1.8.9/codex/static_root/assets/VRadioGroup-E0wBXF2E.fd8052060d44.js +0 -1
  328. codex-1.8.9/codex/static_root/assets/VRadioGroup-E0wBXF2E.fd8052060d44.js.br +0 -0
  329. codex-1.8.9/codex/static_root/assets/VRadioGroup-E0wBXF2E.fd8052060d44.js.gz +0 -0
  330. codex-1.8.9/codex/static_root/assets/VRadioGroup-E0wBXF2E.js +0 -1
  331. codex-1.8.9/codex/static_root/assets/VRadioGroup-E0wBXF2E.js.br +0 -0
  332. codex-1.8.9/codex/static_root/assets/VRadioGroup-E0wBXF2E.js.gz +0 -0
  333. codex-1.8.9/codex/static_root/assets/VSelect-DLKX5Mr6.d84e1c59fa18.js +0 -1
  334. codex-1.8.9/codex/static_root/assets/VSelect-DLKX5Mr6.d84e1c59fa18.js.br +0 -0
  335. codex-1.8.9/codex/static_root/assets/VSelect-DLKX5Mr6.d84e1c59fa18.js.gz +0 -0
  336. codex-1.8.9/codex/static_root/assets/VSelect-DLKX5Mr6.js +0 -1
  337. codex-1.8.9/codex/static_root/assets/VSelect-DLKX5Mr6.js.br +0 -0
  338. codex-1.8.9/codex/static_root/assets/VSelect-DLKX5Mr6.js.gz +0 -0
  339. codex-1.8.9/codex/static_root/assets/VSelectionControl-B8hJUO0p.1dda62fe0677.js +0 -1
  340. codex-1.8.9/codex/static_root/assets/VSelectionControl-B8hJUO0p.1dda62fe0677.js.br +0 -0
  341. codex-1.8.9/codex/static_root/assets/VSelectionControl-B8hJUO0p.1dda62fe0677.js.gz +0 -0
  342. codex-1.8.9/codex/static_root/assets/VSelectionControl-B8hJUO0p.js +0 -1
  343. codex-1.8.9/codex/static_root/assets/VSelectionControl-B8hJUO0p.js.br +0 -0
  344. codex-1.8.9/codex/static_root/assets/VSelectionControl-B8hJUO0p.js.gz +0 -0
  345. codex-1.8.9/codex/static_root/assets/VTable-D0uqeonL.a9897896b818.js +0 -1
  346. codex-1.8.9/codex/static_root/assets/VTable-D0uqeonL.a9897896b818.js.br +0 -0
  347. codex-1.8.9/codex/static_root/assets/VTable-D0uqeonL.a9897896b818.js.gz +0 -0
  348. codex-1.8.9/codex/static_root/assets/VTable-D0uqeonL.js +0 -1
  349. codex-1.8.9/codex/static_root/assets/VTable-D0uqeonL.js.br +0 -0
  350. codex-1.8.9/codex/static_root/assets/VTable-D0uqeonL.js.gz +0 -0
  351. codex-1.8.9/codex/static_root/assets/VWindowItem-DnxUM-gG.242f232488e3.js +0 -1
  352. codex-1.8.9/codex/static_root/assets/VWindowItem-DnxUM-gG.242f232488e3.js.br +0 -0
  353. codex-1.8.9/codex/static_root/assets/VWindowItem-DnxUM-gG.242f232488e3.js.gz +0 -0
  354. codex-1.8.9/codex/static_root/assets/VWindowItem-DnxUM-gG.js +0 -1
  355. codex-1.8.9/codex/static_root/assets/VWindowItem-DnxUM-gG.js.br +0 -0
  356. codex-1.8.9/codex/static_root/assets/VWindowItem-DnxUM-gG.js.gz +0 -0
  357. codex-1.8.9/codex/static_root/assets/admin-B9U01BEM.7c8747c54803.js +0 -1
  358. codex-1.8.9/codex/static_root/assets/admin-B9U01BEM.7c8747c54803.js.br +0 -0
  359. codex-1.8.9/codex/static_root/assets/admin-B9U01BEM.7c8747c54803.js.gz +0 -0
  360. codex-1.8.9/codex/static_root/assets/admin-B9U01BEM.js +0 -1
  361. codex-1.8.9/codex/static_root/assets/admin-B9U01BEM.js.br +0 -0
  362. codex-1.8.9/codex/static_root/assets/admin-B9U01BEM.js.gz +0 -0
  363. codex-1.8.9/codex/static_root/assets/admin-DmYMMUnm.58b7b9f4dadf.js +0 -1
  364. codex-1.8.9/codex/static_root/assets/admin-DmYMMUnm.58b7b9f4dadf.js.br +0 -0
  365. codex-1.8.9/codex/static_root/assets/admin-DmYMMUnm.58b7b9f4dadf.js.gz +0 -0
  366. codex-1.8.9/codex/static_root/assets/admin-DmYMMUnm.js +0 -1
  367. codex-1.8.9/codex/static_root/assets/admin-DmYMMUnm.js.br +0 -0
  368. codex-1.8.9/codex/static_root/assets/admin-DmYMMUnm.js.gz +0 -0
  369. codex-1.8.9/codex/static_root/assets/admin-menu-CuNW4Urn.25020f907bb8.js +0 -1
  370. codex-1.8.9/codex/static_root/assets/admin-menu-CuNW4Urn.25020f907bb8.js.br +0 -0
  371. codex-1.8.9/codex/static_root/assets/admin-menu-CuNW4Urn.25020f907bb8.js.gz +0 -0
  372. codex-1.8.9/codex/static_root/assets/admin-menu-CuNW4Urn.js +0 -1
  373. codex-1.8.9/codex/static_root/assets/admin-menu-CuNW4Urn.js.br +0 -0
  374. codex-1.8.9/codex/static_root/assets/admin-menu-CuNW4Urn.js.gz +0 -0
  375. codex-1.8.9/codex/static_root/assets/admin-settings-button-progress-Bzr-gkG2.b17f5bcba7bb.js +0 -1
  376. codex-1.8.9/codex/static_root/assets/admin-settings-button-progress-Bzr-gkG2.b17f5bcba7bb.js.br +0 -3
  377. codex-1.8.9/codex/static_root/assets/admin-settings-button-progress-Bzr-gkG2.b17f5bcba7bb.js.gz +0 -0
  378. codex-1.8.9/codex/static_root/assets/admin-settings-button-progress-Bzr-gkG2.js +0 -1
  379. codex-1.8.9/codex/static_root/assets/admin-settings-button-progress-Bzr-gkG2.js.br +0 -3
  380. codex-1.8.9/codex/static_root/assets/admin-settings-button-progress-Bzr-gkG2.js.gz +0 -0
  381. codex-1.8.9/codex/static_root/assets/browser-CIw7xQ-1.8d16d2b270d5.js +0 -1
  382. codex-1.8.9/codex/static_root/assets/browser-CIw7xQ-1.8d16d2b270d5.js.br +0 -0
  383. codex-1.8.9/codex/static_root/assets/browser-CIw7xQ-1.8d16d2b270d5.js.gz +0 -0
  384. codex-1.8.9/codex/static_root/assets/browser-CIw7xQ-1.js +0 -1
  385. codex-1.8.9/codex/static_root/assets/browser-CIw7xQ-1.js.br +0 -0
  386. codex-1.8.9/codex/static_root/assets/browser-CIw7xQ-1.js.gz +0 -0
  387. codex-1.8.9/codex/static_root/assets/browser-TRzEFz_k.css +0 -1
  388. codex-1.8.9/codex/static_root/assets/browser-TRzEFz_k.css.br +0 -0
  389. codex-1.8.9/codex/static_root/assets/browser-TRzEFz_k.css.gz +0 -0
  390. codex-1.8.9/codex/static_root/assets/browser-TRzEFz_k.e8ae750c4a41.css +0 -1
  391. codex-1.8.9/codex/static_root/assets/browser-TRzEFz_k.e8ae750c4a41.css.br +0 -0
  392. codex-1.8.9/codex/static_root/assets/browser-TRzEFz_k.e8ae750c4a41.css.gz +0 -0
  393. codex-1.8.9/codex/static_root/assets/change-password-dialog-CXaB7k3y.01788b2cb59e.js +0 -1
  394. codex-1.8.9/codex/static_root/assets/change-password-dialog-CXaB7k3y.01788b2cb59e.js.br +0 -0
  395. codex-1.8.9/codex/static_root/assets/change-password-dialog-CXaB7k3y.01788b2cb59e.js.gz +0 -0
  396. codex-1.8.9/codex/static_root/assets/change-password-dialog-CXaB7k3y.js +0 -1
  397. codex-1.8.9/codex/static_root/assets/change-password-dialog-CXaB7k3y.js.br +0 -0
  398. codex-1.8.9/codex/static_root/assets/change-password-dialog-CXaB7k3y.js.gz +0 -0
  399. codex-1.8.9/codex/static_root/assets/confirm-dialog-gXeRF5bD.4ae6e7a9790a.js +0 -1
  400. codex-1.8.9/codex/static_root/assets/confirm-dialog-gXeRF5bD.4ae6e7a9790a.js.br +0 -0
  401. codex-1.8.9/codex/static_root/assets/confirm-dialog-gXeRF5bD.4ae6e7a9790a.js.gz +0 -0
  402. codex-1.8.9/codex/static_root/assets/confirm-dialog-gXeRF5bD.js +0 -1
  403. codex-1.8.9/codex/static_root/assets/confirm-dialog-gXeRF5bD.js.br +0 -0
  404. codex-1.8.9/codex/static_root/assets/confirm-dialog-gXeRF5bD.js.gz +0 -0
  405. codex-1.8.9/codex/static_root/assets/datetime-column-C5ZBHxV-.35957e684ec2.js +0 -1
  406. codex-1.8.9/codex/static_root/assets/datetime-column-C5ZBHxV-.35957e684ec2.js.br +0 -0
  407. codex-1.8.9/codex/static_root/assets/datetime-column-C5ZBHxV-.35957e684ec2.js.gz +0 -0
  408. codex-1.8.9/codex/static_root/assets/datetime-column-C5ZBHxV-.js +0 -1
  409. codex-1.8.9/codex/static_root/assets/datetime-column-C5ZBHxV-.js.br +0 -0
  410. codex-1.8.9/codex/static_root/assets/datetime-column-C5ZBHxV-.js.gz +0 -0
  411. codex-1.8.9/codex/static_root/assets/filter-CQ83UjMF.7cd979df64da.js +0 -1
  412. codex-1.8.9/codex/static_root/assets/filter-CQ83UjMF.7cd979df64da.js.br +0 -0
  413. codex-1.8.9/codex/static_root/assets/filter-CQ83UjMF.7cd979df64da.js.gz +0 -0
  414. codex-1.8.9/codex/static_root/assets/filter-CQ83UjMF.js +0 -1
  415. codex-1.8.9/codex/static_root/assets/filter-CQ83UjMF.js.br +0 -0
  416. codex-1.8.9/codex/static_root/assets/filter-CQ83UjMF.js.gz +0 -0
  417. codex-1.8.9/codex/static_root/assets/flag-tab-CN3Y0PZS.f5f7122a015e.js +0 -1
  418. codex-1.8.9/codex/static_root/assets/flag-tab-CN3Y0PZS.f5f7122a015e.js.br +0 -0
  419. codex-1.8.9/codex/static_root/assets/flag-tab-CN3Y0PZS.f5f7122a015e.js.gz +0 -0
  420. codex-1.8.9/codex/static_root/assets/flag-tab-CN3Y0PZS.js +0 -1
  421. codex-1.8.9/codex/static_root/assets/flag-tab-CN3Y0PZS.js.br +0 -0
  422. codex-1.8.9/codex/static_root/assets/flag-tab-CN3Y0PZS.js.gz +0 -0
  423. codex-1.8.9/codex/static_root/assets/forwardRefs-DBxFdh0r.03d9552a8e4c.js +0 -1
  424. codex-1.8.9/codex/static_root/assets/forwardRefs-DBxFdh0r.03d9552a8e4c.js.br +0 -0
  425. codex-1.8.9/codex/static_root/assets/forwardRefs-DBxFdh0r.03d9552a8e4c.js.gz +0 -0
  426. codex-1.8.9/codex/static_root/assets/forwardRefs-DBxFdh0r.js +0 -1
  427. codex-1.8.9/codex/static_root/assets/forwardRefs-DBxFdh0r.js.br +0 -0
  428. codex-1.8.9/codex/static_root/assets/forwardRefs-DBxFdh0r.js.gz +0 -0
  429. codex-1.8.9/codex/static_root/assets/group-tab-DMPL6FiK.82f53e5c353a.js +0 -1
  430. codex-1.8.9/codex/static_root/assets/group-tab-DMPL6FiK.82f53e5c353a.js.br +0 -0
  431. codex-1.8.9/codex/static_root/assets/group-tab-DMPL6FiK.82f53e5c353a.js.gz +0 -0
  432. codex-1.8.9/codex/static_root/assets/group-tab-DMPL6FiK.js +0 -1
  433. codex-1.8.9/codex/static_root/assets/group-tab-DMPL6FiK.js.br +0 -0
  434. codex-1.8.9/codex/static_root/assets/group-tab-DMPL6FiK.js.gz +0 -0
  435. codex-1.8.9/codex/static_root/assets/http-error-DgJ8-SFZ.da2fe4d026ce.js +0 -1
  436. codex-1.8.9/codex/static_root/assets/http-error-DgJ8-SFZ.da2fe4d026ce.js.br +0 -0
  437. codex-1.8.9/codex/static_root/assets/http-error-DgJ8-SFZ.da2fe4d026ce.js.gz +0 -0
  438. codex-1.8.9/codex/static_root/assets/http-error-DgJ8-SFZ.js +0 -1
  439. codex-1.8.9/codex/static_root/assets/http-error-DgJ8-SFZ.js.br +0 -0
  440. codex-1.8.9/codex/static_root/assets/http-error-DgJ8-SFZ.js.gz +0 -0
  441. codex-1.8.9/codex/static_root/assets/index-CQ0ue0KC.b38e465abad4.js +0 -1
  442. codex-1.8.9/codex/static_root/assets/index-CQ0ue0KC.b38e465abad4.js.br +0 -0
  443. codex-1.8.9/codex/static_root/assets/index-CQ0ue0KC.b38e465abad4.js.gz +0 -0
  444. codex-1.8.9/codex/static_root/assets/index-CQ0ue0KC.js +0 -1
  445. codex-1.8.9/codex/static_root/assets/index-CQ0ue0KC.js.br +0 -0
  446. codex-1.8.9/codex/static_root/assets/index-CQ0ue0KC.js.gz +0 -0
  447. codex-1.8.9/codex/static_root/assets/library-tab-CfuZgnol.880ba8bd0149.js +0 -1
  448. codex-1.8.9/codex/static_root/assets/library-tab-CfuZgnol.880ba8bd0149.js.br +0 -0
  449. codex-1.8.9/codex/static_root/assets/library-tab-CfuZgnol.880ba8bd0149.js.gz +0 -0
  450. codex-1.8.9/codex/static_root/assets/library-tab-CfuZgnol.js +0 -1
  451. codex-1.8.9/codex/static_root/assets/library-tab-CfuZgnol.js.br +0 -0
  452. codex-1.8.9/codex/static_root/assets/library-tab-CfuZgnol.js.gz +0 -0
  453. codex-1.8.9/codex/static_root/assets/main-G8n9PNCf.cad6fa53a574.js +0 -39
  454. codex-1.8.9/codex/static_root/assets/main-G8n9PNCf.cad6fa53a574.js.br +0 -0
  455. codex-1.8.9/codex/static_root/assets/main-G8n9PNCf.cad6fa53a574.js.gz +0 -0
  456. codex-1.8.9/codex/static_root/assets/main-G8n9PNCf.js +0 -39
  457. codex-1.8.9/codex/static_root/assets/main-G8n9PNCf.js.br +0 -0
  458. codex-1.8.9/codex/static_root/assets/main-G8n9PNCf.js.gz +0 -0
  459. codex-1.8.9/codex/static_root/assets/pager-full-pdf-BKZayLN3.4b724ad0595f.js +0 -1
  460. codex-1.8.9/codex/static_root/assets/pager-full-pdf-BKZayLN3.4b724ad0595f.js.br +0 -0
  461. codex-1.8.9/codex/static_root/assets/pager-full-pdf-BKZayLN3.4b724ad0595f.js.gz +0 -0
  462. codex-1.8.9/codex/static_root/assets/pager-full-pdf-BKZayLN3.js +0 -1
  463. codex-1.8.9/codex/static_root/assets/pager-full-pdf-BKZayLN3.js.br +0 -0
  464. codex-1.8.9/codex/static_root/assets/pager-full-pdf-BKZayLN3.js.gz +0 -0
  465. codex-1.8.9/codex/static_root/assets/pagination-toolbar-0vkF7yjo.d32720f76776.js +0 -1
  466. codex-1.8.9/codex/static_root/assets/pagination-toolbar-0vkF7yjo.d32720f76776.js.br +0 -0
  467. codex-1.8.9/codex/static_root/assets/pagination-toolbar-0vkF7yjo.d32720f76776.js.gz +0 -0
  468. codex-1.8.9/codex/static_root/assets/pagination-toolbar-0vkF7yjo.js +0 -1
  469. codex-1.8.9/codex/static_root/assets/pagination-toolbar-0vkF7yjo.js.br +0 -0
  470. codex-1.8.9/codex/static_root/assets/pagination-toolbar-0vkF7yjo.js.gz +0 -0
  471. codex-1.8.9/codex/static_root/assets/pdf-doc-CHmFdwy6.4142a4f31d20.js +0 -372
  472. codex-1.8.9/codex/static_root/assets/pdf-doc-CHmFdwy6.4142a4f31d20.js.br +0 -0
  473. codex-1.8.9/codex/static_root/assets/pdf-doc-CHmFdwy6.4142a4f31d20.js.gz +0 -0
  474. codex-1.8.9/codex/static_root/assets/pdf-doc-CHmFdwy6.js +0 -372
  475. codex-1.8.9/codex/static_root/assets/pdf-doc-CHmFdwy6.js.br +0 -0
  476. codex-1.8.9/codex/static_root/assets/pdf-doc-CHmFdwy6.js.gz +0 -0
  477. codex-1.8.9/codex/static_root/assets/reader-YIWmNjj6.c96fc7891aec.js +0 -2
  478. codex-1.8.9/codex/static_root/assets/reader-YIWmNjj6.c96fc7891aec.js.br +0 -0
  479. codex-1.8.9/codex/static_root/assets/reader-YIWmNjj6.c96fc7891aec.js.gz +0 -0
  480. codex-1.8.9/codex/static_root/assets/reader-YIWmNjj6.js +0 -2
  481. codex-1.8.9/codex/static_root/assets/reader-YIWmNjj6.js.br +0 -0
  482. codex-1.8.9/codex/static_root/assets/reader-YIWmNjj6.js.gz +0 -0
  483. codex-1.8.9/codex/static_root/assets/relation-chips-DzoiGrOj.95f663c6c18d.js +0 -1
  484. codex-1.8.9/codex/static_root/assets/relation-chips-DzoiGrOj.95f663c6c18d.js.br +0 -0
  485. codex-1.8.9/codex/static_root/assets/relation-chips-DzoiGrOj.95f663c6c18d.js.gz +0 -0
  486. codex-1.8.9/codex/static_root/assets/relation-chips-DzoiGrOj.js +0 -1
  487. codex-1.8.9/codex/static_root/assets/relation-chips-DzoiGrOj.js.br +0 -0
  488. codex-1.8.9/codex/static_root/assets/relation-chips-DzoiGrOj.js.gz +0 -0
  489. codex-1.8.9/codex/static_root/assets/settings-drawer-CUC-r4sg.e019f5467d25.js +0 -2
  490. codex-1.8.9/codex/static_root/assets/settings-drawer-CUC-r4sg.e019f5467d25.js.br +0 -0
  491. codex-1.8.9/codex/static_root/assets/settings-drawer-CUC-r4sg.e019f5467d25.js.gz +0 -0
  492. codex-1.8.9/codex/static_root/assets/settings-drawer-CUC-r4sg.js +0 -2
  493. codex-1.8.9/codex/static_root/assets/settings-drawer-CUC-r4sg.js.br +0 -0
  494. codex-1.8.9/codex/static_root/assets/settings-drawer-CUC-r4sg.js.gz +0 -0
  495. codex-1.8.9/codex/static_root/assets/ssrBoot-D7foQ-7h.31c07ef6f646.js +0 -1
  496. codex-1.8.9/codex/static_root/assets/ssrBoot-D7foQ-7h.31c07ef6f646.js.br +0 -0
  497. codex-1.8.9/codex/static_root/assets/ssrBoot-D7foQ-7h.31c07ef6f646.js.gz +0 -0
  498. codex-1.8.9/codex/static_root/assets/ssrBoot-D7foQ-7h.js +0 -1
  499. codex-1.8.9/codex/static_root/assets/ssrBoot-D7foQ-7h.js.br +0 -0
  500. codex-1.8.9/codex/static_root/assets/ssrBoot-D7foQ-7h.js.gz +0 -0
  501. codex-1.8.9/codex/static_root/assets/stats-tab-BSy-9tZm.2a7560872f5c.js +0 -1
  502. codex-1.8.9/codex/static_root/assets/stats-tab-BSy-9tZm.2a7560872f5c.js.br +0 -0
  503. codex-1.8.9/codex/static_root/assets/stats-tab-BSy-9tZm.2a7560872f5c.js.gz +0 -0
  504. codex-1.8.9/codex/static_root/assets/stats-tab-BSy-9tZm.js +0 -1
  505. codex-1.8.9/codex/static_root/assets/stats-tab-BSy-9tZm.js.br +0 -0
  506. codex-1.8.9/codex/static_root/assets/stats-tab-BSy-9tZm.js.gz +0 -0
  507. codex-1.8.9/codex/static_root/assets/task-tab-Sp49fYRT.3a1aab3f3716.js +0 -1
  508. codex-1.8.9/codex/static_root/assets/task-tab-Sp49fYRT.3a1aab3f3716.js.br +0 -0
  509. codex-1.8.9/codex/static_root/assets/task-tab-Sp49fYRT.3a1aab3f3716.js.gz +0 -0
  510. codex-1.8.9/codex/static_root/assets/task-tab-Sp49fYRT.js +0 -1
  511. codex-1.8.9/codex/static_root/assets/task-tab-Sp49fYRT.js.br +0 -0
  512. codex-1.8.9/codex/static_root/assets/task-tab-Sp49fYRT.js.gz +0 -0
  513. codex-1.8.9/codex/static_root/assets/unauthorized-BM6KzvCy.4c114d9693c1.js +0 -1
  514. codex-1.8.9/codex/static_root/assets/unauthorized-BM6KzvCy.4c114d9693c1.js.br +0 -0
  515. codex-1.8.9/codex/static_root/assets/unauthorized-BM6KzvCy.4c114d9693c1.js.gz +0 -0
  516. codex-1.8.9/codex/static_root/assets/unauthorized-BM6KzvCy.js +0 -1
  517. codex-1.8.9/codex/static_root/assets/unauthorized-BM6KzvCy.js.br +0 -0
  518. codex-1.8.9/codex/static_root/assets/unauthorized-BM6KzvCy.js.gz +0 -0
  519. codex-1.8.9/codex/static_root/assets/user-tab-yQ60jtVd.ad593cc6e6ea.js +0 -1
  520. codex-1.8.9/codex/static_root/assets/user-tab-yQ60jtVd.ad593cc6e6ea.js.br +0 -0
  521. codex-1.8.9/codex/static_root/assets/user-tab-yQ60jtVd.ad593cc6e6ea.js.gz +0 -0
  522. codex-1.8.9/codex/static_root/assets/user-tab-yQ60jtVd.js +0 -1
  523. codex-1.8.9/codex/static_root/assets/user-tab-yQ60jtVd.js.br +0 -0
  524. codex-1.8.9/codex/static_root/assets/user-tab-yQ60jtVd.js.gz +0 -0
  525. codex-1.8.9/codex/static_root/manifest.a059c4dc5443.json +0 -760
  526. codex-1.8.9/codex/static_root/manifest.a059c4dc5443.json.br +0 -0
  527. codex-1.8.9/codex/static_root/manifest.a059c4dc5443.json.gz +0 -0
  528. codex-1.8.9/codex/static_root/manifest.json +0 -760
  529. codex-1.8.9/codex/static_root/manifest.json.br +0 -0
  530. codex-1.8.9/codex/static_root/manifest.json.gz +0 -0
  531. codex-1.8.9/codex/static_root/staticfiles.json +0 -1
  532. codex-1.8.9/codex/static_src/img/.picopt_treestamps.yaml +0 -19
  533. codex-1.8.9/pyproject.toml +0 -392
  534. codex-1.8.9/tests/importer/test_basic.py +0 -1365
  535. codex-1.8.9/tests/importer/test_update_all.py +0 -693
  536. codex-1.8.9/tests/importer/test_update_none.py +0 -151
  537. {codex-1.8.9 → codex-1.8.11}/.gitignore +0 -0
  538. {codex-1.8.9 → codex-1.8.11}/LICENSE +0 -0
  539. {codex-1.8.9 → codex-1.8.11}/README.md +0 -0
  540. {codex-1.8.9 → codex-1.8.11}/codex/__init__.py +0 -0
  541. {codex-1.8.9 → codex-1.8.11}/codex/applications/__init__.py +0 -0
  542. {codex-1.8.9 → codex-1.8.11}/codex/applications/lifespan.py +0 -0
  543. {codex-1.8.9 → codex-1.8.11}/codex/applications/websocket.py +0 -0
  544. {codex-1.8.9 → codex-1.8.11}/codex/asgi.py +0 -0
  545. {codex-1.8.9 → codex-1.8.11}/codex/choices/__init__.py +0 -0
  546. {codex-1.8.9 → codex-1.8.11}/codex/choices/admin.py +0 -0
  547. {codex-1.8.9 → codex-1.8.11}/codex/choices/browser.py +0 -0
  548. {codex-1.8.9 → codex-1.8.11}/codex/choices/choices_to_json.py +0 -0
  549. {codex-1.8.9 → codex-1.8.11}/codex/choices/notifications.py +0 -0
  550. {codex-1.8.9 → codex-1.8.11}/codex/choices/reader.py +0 -0
  551. {codex-1.8.9 → codex-1.8.11}/codex/choices/search.py +0 -0
  552. {codex-1.8.9 → codex-1.8.11}/codex/choices/statii.py +0 -0
  553. {codex-1.8.9 → codex-1.8.11}/codex/img/folder.svg +0 -0
  554. {codex-1.8.9 → codex-1.8.11}/codex/img/imprint.svg +0 -0
  555. {codex-1.8.9 → codex-1.8.11}/codex/img/logo-maskable.svg +0 -0
  556. {codex-1.8.9 → codex-1.8.11}/codex/img/logo.svg +0 -0
  557. {codex-1.8.9 → codex-1.8.11}/codex/img/missing-cover.svg +0 -0
  558. {codex-1.8.9 → codex-1.8.11}/codex/img/publisher.svg +0 -0
  559. {codex-1.8.9 → codex-1.8.11}/codex/img/series.svg +0 -0
  560. {codex-1.8.9 → codex-1.8.11}/codex/img/story-arc.svg +0 -0
  561. {codex-1.8.9 → codex-1.8.11}/codex/img/volume.svg +0 -0
  562. {codex-1.8.9 → codex-1.8.11}/codex/librarian/README.md +0 -0
  563. {codex-1.8.9 → codex-1.8.11}/codex/librarian/__init__.py +0 -0
  564. {codex-1.8.9 → codex-1.8.11}/codex/librarian/bookmark/__init__.py +0 -0
  565. {codex-1.8.9 → codex-1.8.11}/codex/librarian/bookmark/bookmarkd.py +0 -0
  566. {codex-1.8.9 → codex-1.8.11}/codex/librarian/bookmark/tasks.py +0 -0
  567. {codex-1.8.9 → codex-1.8.11}/codex/librarian/bookmark/update.py +0 -0
  568. {codex-1.8.9 → codex-1.8.11}/codex/librarian/bookmark/user_active.py +0 -0
  569. {codex-1.8.9 → codex-1.8.11}/codex/librarian/covers/__init__.py +0 -0
  570. {codex-1.8.9 → codex-1.8.11}/codex/librarian/covers/coverd.py +0 -0
  571. {codex-1.8.9 → codex-1.8.11}/codex/librarian/covers/create.py +0 -0
  572. {codex-1.8.9 → codex-1.8.11}/codex/librarian/covers/path.py +0 -0
  573. {codex-1.8.9 → codex-1.8.11}/codex/librarian/covers/purge.py +0 -0
  574. {codex-1.8.9 → codex-1.8.11}/codex/librarian/covers/status.py +0 -0
  575. {codex-1.8.9 → codex-1.8.11}/codex/librarian/covers/tasks.py +0 -0
  576. {codex-1.8.9 → codex-1.8.11}/codex/librarian/cron/__init__.py +0 -0
  577. {codex-1.8.9 → codex-1.8.11}/codex/librarian/cron/crond.py +0 -0
  578. {codex-1.8.9 → codex-1.8.11}/codex/librarian/memory.py +0 -0
  579. {codex-1.8.9 → codex-1.8.11}/codex/librarian/mp_queue.py +0 -0
  580. {codex-1.8.9 → codex-1.8.11}/codex/librarian/notifier/__init__.py +0 -0
  581. {codex-1.8.9 → codex-1.8.11}/codex/librarian/notifier/notifierd.py +0 -0
  582. {codex-1.8.9 → codex-1.8.11}/codex/librarian/notifier/tasks.py +0 -0
  583. {codex-1.8.9 → codex-1.8.11}/codex/librarian/restarter/__init__.py +0 -0
  584. {codex-1.8.9 → codex-1.8.11}/codex/librarian/restarter/status.py +0 -0
  585. {codex-1.8.9 → codex-1.8.11}/codex/librarian/restarter/tasks.py +0 -0
  586. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/__init__.py +0 -0
  587. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/__init__.py +0 -0
  588. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/const.py +0 -0
  589. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/create/__init__.py +0 -0
  590. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/create/comics.py +0 -0
  591. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/create/const.py +0 -0
  592. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/create/covers.py +0 -0
  593. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/create/folders.py +0 -0
  594. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/create/foreign_keys.py +0 -0
  595. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/create/link_fks.py +0 -0
  596. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/delete/__init__.py +0 -0
  597. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/delete/comics.py +0 -0
  598. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/delete/covers.py +0 -0
  599. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/delete/folders.py +0 -0
  600. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/failed/__init__.py +0 -0
  601. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/failed/create.py +0 -0
  602. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/failed/failed.py +0 -0
  603. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/failed/query.py +0 -0
  604. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/finish.py +0 -0
  605. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/importer.py +0 -0
  606. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/link/__init__.py +0 -0
  607. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/link/const.py +0 -0
  608. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/link/covers.py +0 -0
  609. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/link/delete.py +0 -0
  610. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/link/sum.py +0 -0
  611. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/moved/__init__.py +0 -0
  612. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/moved/comics.py +0 -0
  613. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/moved/covers.py +0 -0
  614. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/moved/folders.py +0 -0
  615. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/query/__init__.py +0 -0
  616. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/query/covers.py +0 -0
  617. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/query/filters.py +0 -0
  618. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/query/foreign_keys.py +0 -0
  619. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/query/links.py +0 -0
  620. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/query/links_fk.py +0 -0
  621. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/query/links_m2m.py +0 -0
  622. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/query/update_comics.py +0 -0
  623. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/query/update_fks.py +0 -0
  624. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/read/__init__.py +0 -0
  625. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/read/aggregate_path.py +0 -0
  626. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/read/const.py +0 -0
  627. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/read/extract.py +0 -0
  628. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/read/folders.py +0 -0
  629. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/read/foreign_keys.py +0 -0
  630. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/read/many_to_many.py +0 -0
  631. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/search/__init__.py +0 -0
  632. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/search/prepare.py +0 -0
  633. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/statii/__init__.py +0 -0
  634. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/statii/create.py +0 -0
  635. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/statii/delete.py +0 -0
  636. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/statii/failed.py +0 -0
  637. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/statii/link.py +0 -0
  638. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/statii/moved.py +0 -0
  639. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/statii/query.py +0 -0
  640. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/statii/read.py +0 -0
  641. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/statii/search.py +0 -0
  642. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/status.py +0 -0
  643. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/importer/tasks.py +0 -0
  644. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/janitor/__init__.py +0 -0
  645. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/janitor/cleanup.py +0 -0
  646. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/janitor/failed_imports.py +0 -0
  647. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/janitor/janitor.py +0 -0
  648. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/janitor/scheduled_time.py +0 -0
  649. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/janitor/status.py +0 -0
  650. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/janitor/tasks.py +0 -0
  651. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/janitor/vacuum.py +0 -0
  652. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/priority.py +0 -0
  653. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/scribed.py +0 -0
  654. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/search/__init__.py +0 -0
  655. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/search/const.py +0 -0
  656. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/search/handler.py +0 -0
  657. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/search/prepare.py +0 -0
  658. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/search/remove.py +0 -0
  659. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/search/status.py +0 -0
  660. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/search/sync.py +0 -0
  661. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/search/tasks.py +0 -0
  662. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/status.py +0 -0
  663. {codex-1.8.9 → codex-1.8.11}/codex/librarian/scribe/tasks.py +0 -0
  664. {codex-1.8.9 → codex-1.8.11}/codex/librarian/status.py +0 -0
  665. {codex-1.8.9 → codex-1.8.11}/codex/librarian/status_controller.py +0 -0
  666. {codex-1.8.9 → codex-1.8.11}/codex/librarian/tasks.py +0 -0
  667. {codex-1.8.9 → codex-1.8.11}/codex/librarian/telemeter/__init__.py +0 -0
  668. {codex-1.8.9 → codex-1.8.11}/codex/librarian/telemeter/scheduled_time.py +0 -0
  669. {codex-1.8.9 → codex-1.8.11}/codex/librarian/telemeter/stats.py +0 -0
  670. {codex-1.8.9 → codex-1.8.11}/codex/librarian/telemeter/tasks.py +0 -0
  671. {codex-1.8.9 → codex-1.8.11}/codex/librarian/telemeter/telemeter.py +0 -0
  672. {codex-1.8.9 → codex-1.8.11}/codex/librarian/threads.py +0 -0
  673. {codex-1.8.9 → codex-1.8.11}/codex/librarian/watchdog/README.md +0 -0
  674. {codex-1.8.9 → codex-1.8.11}/codex/librarian/watchdog/__init__.py +0 -0
  675. {codex-1.8.9 → codex-1.8.11}/codex/librarian/watchdog/const.py +0 -0
  676. {codex-1.8.9 → codex-1.8.11}/codex/librarian/watchdog/db_snapshot.py +0 -0
  677. {codex-1.8.9 → codex-1.8.11}/codex/librarian/watchdog/dir_snapshot_diff.py +0 -0
  678. {codex-1.8.9 → codex-1.8.11}/codex/librarian/watchdog/emitter.py +0 -0
  679. {codex-1.8.9 → codex-1.8.11}/codex/librarian/watchdog/event_batcherd.py +0 -0
  680. {codex-1.8.9 → codex-1.8.11}/codex/librarian/watchdog/events.py +0 -0
  681. {codex-1.8.9 → codex-1.8.11}/codex/librarian/watchdog/handlers.py +0 -0
  682. {codex-1.8.9 → codex-1.8.11}/codex/librarian/watchdog/observers.py +0 -0
  683. {codex-1.8.9 → codex-1.8.11}/codex/librarian/watchdog/status.py +0 -0
  684. {codex-1.8.9 → codex-1.8.11}/codex/librarian/watchdog/tasks.py +0 -0
  685. {codex-1.8.9 → codex-1.8.11}/codex/middleware.py +0 -0
  686. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0001_init.py +0 -0
  687. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0002_auto_20200826_0622.py +0 -0
  688. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0003_auto_20200831_2033.py +0 -0
  689. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0004_failedimport.py +0 -0
  690. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0005_auto_20200918_0146.py +0 -0
  691. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0006_update_default_names_and_remove_duplicate_comics.py +0 -0
  692. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0007_auto_20211210_1710.py +0 -0
  693. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0008_alter_comic_created_at_alter_comic_format_and_more.py +0 -0
  694. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0009_alter_comic_parent_folder.py +0 -0
  695. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0010_haystack.py +0 -0
  696. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0011_library_groups_and_metadata_changes.py +0 -0
  697. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0012_rename_description_comic_comments.py +0 -0
  698. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0013_int_issue_count_longer_charfields.py +0 -0
  699. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0014_pdf_issue_suffix_remove_cover_image_sort_name.py +0 -0
  700. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0015_link_comics_to_top_level_folders.py +0 -0
  701. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0016_remove_comic_cover_path_librarianstatus.py +0 -0
  702. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0017_alter_timestamp_options_alter_adminflag_name_and_more.py +0 -0
  703. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0018_rename_userbookmark_bookmark.py +0 -0
  704. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0019_delete_queuejob.py +0 -0
  705. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0020_remove_search_tables.py +0 -0
  706. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0021_bookmark_fit_to_choices_read_in_reverse.py +0 -0
  707. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0022_bookmark_vertical_useractive_null_statuses.py +0 -0
  708. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0023_rename_credit_creator_and_more.py +0 -0
  709. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0024_comic_gtin_comic_story_arc_number.py +0 -0
  710. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0025_add_story_arc_number.py +0 -0
  711. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0026_comicbox_1.py +0 -0
  712. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0027_import_order_and_covers.py +0 -0
  713. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0028_telemeter.py +0 -0
  714. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0029_comicfts.py +0 -0
  715. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0030_nocase_collation_day_month_indexes_status_types.py +0 -0
  716. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0031_adminflag_banner.py +0 -0
  717. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0032_alter_librarianstatus_preactive.py +0 -0
  718. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0033_alter_librarianstatus_status_type.py +0 -0
  719. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0034_comicbox2.py +0 -0
  720. {codex-1.8.9 → codex-1.8.11}/codex/migrations/0035_fts_optmize.py +0 -0
  721. {codex-1.8.9 → codex-1.8.11}/codex/migrations/__init__.py +0 -0
  722. {codex-1.8.9 → codex-1.8.11}/codex/models/__init__.py +0 -0
  723. {codex-1.8.9 → codex-1.8.11}/codex/models/admin.py +0 -0
  724. {codex-1.8.9 → codex-1.8.11}/codex/models/base.py +0 -0
  725. {codex-1.8.9 → codex-1.8.11}/codex/models/bookmark.py +0 -0
  726. {codex-1.8.9 → codex-1.8.11}/codex/models/comic.py +0 -0
  727. {codex-1.8.9 → codex-1.8.11}/codex/models/fields.py +0 -0
  728. {codex-1.8.9 → codex-1.8.11}/codex/models/functions.py +0 -0
  729. {codex-1.8.9 → codex-1.8.11}/codex/models/groups.py +0 -0
  730. {codex-1.8.9 → codex-1.8.11}/codex/models/identifier.py +0 -0
  731. {codex-1.8.9 → codex-1.8.11}/codex/models/library.py +0 -0
  732. {codex-1.8.9 → codex-1.8.11}/codex/models/named.py +0 -0
  733. {codex-1.8.9 → codex-1.8.11}/codex/models/paths.py +0 -0
  734. {codex-1.8.9 → codex-1.8.11}/codex/models/query.py +0 -0
  735. {codex-1.8.9 → codex-1.8.11}/codex/models/util.py +0 -0
  736. {codex-1.8.9 → codex-1.8.11}/codex/run.py +0 -0
  737. {codex-1.8.9 → codex-1.8.11}/codex/serializers/README.md +0 -0
  738. {codex-1.8.9 → codex-1.8.11}/codex/serializers/__init__.py +0 -0
  739. {codex-1.8.9 → codex-1.8.11}/codex/serializers/admin/__init__.py +0 -0
  740. {codex-1.8.9 → codex-1.8.11}/codex/serializers/admin/flags.py +0 -0
  741. {codex-1.8.9 → codex-1.8.11}/codex/serializers/admin/groups.py +0 -0
  742. {codex-1.8.9 → codex-1.8.11}/codex/serializers/admin/libraries.py +0 -0
  743. {codex-1.8.9 → codex-1.8.11}/codex/serializers/admin/stats.py +0 -0
  744. {codex-1.8.9 → codex-1.8.11}/codex/serializers/admin/tasks.py +0 -0
  745. {codex-1.8.9 → codex-1.8.11}/codex/serializers/admin/users.py +0 -0
  746. {codex-1.8.9 → codex-1.8.11}/codex/serializers/auth.py +0 -0
  747. {codex-1.8.9 → codex-1.8.11}/codex/serializers/browser/__init__.py +0 -0
  748. {codex-1.8.9 → codex-1.8.11}/codex/serializers/browser/choices.py +0 -0
  749. {codex-1.8.9 → codex-1.8.11}/codex/serializers/browser/filters.py +0 -0
  750. {codex-1.8.9 → codex-1.8.11}/codex/serializers/browser/metadata.py +0 -0
  751. {codex-1.8.9 → codex-1.8.11}/codex/serializers/browser/mixins.py +0 -0
  752. {codex-1.8.9 → codex-1.8.11}/codex/serializers/browser/mtime.py +0 -0
  753. {codex-1.8.9 → codex-1.8.11}/codex/serializers/browser/page.py +0 -0
  754. {codex-1.8.9 → codex-1.8.11}/codex/serializers/browser/settings.py +0 -0
  755. {codex-1.8.9 → codex-1.8.11}/codex/serializers/fields/__init__.py +0 -0
  756. {codex-1.8.9 → codex-1.8.11}/codex/serializers/fields/auth.py +0 -0
  757. {codex-1.8.9 → codex-1.8.11}/codex/serializers/fields/base.py +0 -0
  758. {codex-1.8.9 → codex-1.8.11}/codex/serializers/fields/browser.py +0 -0
  759. {codex-1.8.9 → codex-1.8.11}/codex/serializers/fields/group.py +0 -0
  760. {codex-1.8.9 → codex-1.8.11}/codex/serializers/fields/reader.py +0 -0
  761. {codex-1.8.9 → codex-1.8.11}/codex/serializers/fields/sanitized.py +0 -0
  762. {codex-1.8.9 → codex-1.8.11}/codex/serializers/fields/session.py +0 -0
  763. {codex-1.8.9 → codex-1.8.11}/codex/serializers/fields/stats.py +0 -0
  764. {codex-1.8.9 → codex-1.8.11}/codex/serializers/fields/vuetify.py +0 -0
  765. {codex-1.8.9 → codex-1.8.11}/codex/serializers/homepage.py +0 -0
  766. {codex-1.8.9 → codex-1.8.11}/codex/serializers/mixins.py +0 -0
  767. {codex-1.8.9 → codex-1.8.11}/codex/serializers/models/__init__.py +0 -0
  768. {codex-1.8.9 → codex-1.8.11}/codex/serializers/models/admin.py +0 -0
  769. {codex-1.8.9 → codex-1.8.11}/codex/serializers/models/base.py +0 -0
  770. {codex-1.8.9 → codex-1.8.11}/codex/serializers/models/bookmark.py +0 -0
  771. {codex-1.8.9 → codex-1.8.11}/codex/serializers/models/comic.py +0 -0
  772. {codex-1.8.9 → codex-1.8.11}/codex/serializers/models/groups.py +0 -0
  773. {codex-1.8.9 → codex-1.8.11}/codex/serializers/models/named.py +0 -0
  774. {codex-1.8.9 → codex-1.8.11}/codex/serializers/models/pycountry.py +0 -0
  775. {codex-1.8.9 → codex-1.8.11}/codex/serializers/opds/__init__.py +0 -0
  776. {codex-1.8.9 → codex-1.8.11}/codex/serializers/opds/authentication.py +0 -0
  777. {codex-1.8.9 → codex-1.8.11}/codex/serializers/opds/urls.py +0 -0
  778. {codex-1.8.9 → codex-1.8.11}/codex/serializers/opds/v1.py +0 -0
  779. {codex-1.8.9 → codex-1.8.11}/codex/serializers/opds/v2/__init__.py +0 -0
  780. {codex-1.8.9 → codex-1.8.11}/codex/serializers/opds/v2/facet.py +0 -0
  781. {codex-1.8.9 → codex-1.8.11}/codex/serializers/opds/v2/feed.py +0 -0
  782. {codex-1.8.9 → codex-1.8.11}/codex/serializers/opds/v2/links.py +0 -0
  783. {codex-1.8.9 → codex-1.8.11}/codex/serializers/opds/v2/metadata.py +0 -0
  784. {codex-1.8.9 → codex-1.8.11}/codex/serializers/opds/v2/progression.py +0 -0
  785. {codex-1.8.9 → codex-1.8.11}/codex/serializers/opds/v2/publication.py +0 -0
  786. {codex-1.8.9 → codex-1.8.11}/codex/serializers/opds/v2/unused.py +0 -0
  787. {codex-1.8.9 → codex-1.8.11}/codex/serializers/reader.py +0 -0
  788. {codex-1.8.9 → codex-1.8.11}/codex/serializers/redirect.py +0 -0
  789. {codex-1.8.9 → codex-1.8.11}/codex/serializers/route.py +0 -0
  790. {codex-1.8.9 → codex-1.8.11}/codex/serializers/settings.py +0 -0
  791. {codex-1.8.9 → codex-1.8.11}/codex/serializers/versions.py +0 -0
  792. {codex-1.8.9 → codex-1.8.11}/codex/settings/README.md +0 -0
  793. {codex-1.8.9 → codex-1.8.11}/codex/settings/__init__.py +0 -0
  794. {codex-1.8.9 → codex-1.8.11}/codex/settings/hypercorn.py +0 -0
  795. {codex-1.8.9 → codex-1.8.11}/codex/settings/hypercorn.toml.default +0 -0
  796. {codex-1.8.9 → codex-1.8.11}/codex/settings/secret_key.py +0 -0
  797. {codex-1.8.9 → codex-1.8.11}/codex/settings/timezone.py +0 -0
  798. {codex-1.8.9 → codex-1.8.11}/codex/settings/whitenoise.py +0 -0
  799. {codex-1.8.9 → codex-1.8.11}/codex/signals/__init__.py +0 -0
  800. {codex-1.8.9 → codex-1.8.11}/codex/signals/django_signals.py +0 -0
  801. {codex-1.8.9 → codex-1.8.11}/codex/signals/os_signals.py +0 -0
  802. {codex-1.8.9 → codex-1.8.11}/codex/startup/__init__.py +0 -0
  803. {codex-1.8.9 → codex-1.8.11}/codex/startup/db.py +0 -0
  804. {codex-1.8.9 → codex-1.8.11}/codex/startup/logger_init.py +0 -0
  805. {codex-1.8.9 → codex-1.8.11}/codex/startup/registration.py +0 -0
  806. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VCheckbox-CvH8ekHL.016ed8d222c4.css +0 -0
  807. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VCheckbox-CvH8ekHL.016ed8d222c4.css.br +0 -0
  808. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VCheckbox-CvH8ekHL.016ed8d222c4.css.gz +0 -0
  809. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VCheckbox-CvH8ekHL.css +0 -0
  810. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VCheckbox-CvH8ekHL.css.br +0 -0
  811. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VCheckbox-CvH8ekHL.css.gz +0 -0
  812. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VCombobox-DHFthaP6.942336d23612.css +0 -0
  813. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VCombobox-DHFthaP6.942336d23612.css.br +0 -0
  814. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VCombobox-DHFthaP6.942336d23612.css.gz +0 -0
  815. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VCombobox-DHFthaP6.css +0 -0
  816. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VCombobox-DHFthaP6.css.br +0 -0
  817. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VCombobox-DHFthaP6.css.gz +0 -0
  818. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VDialog-CpWjrJ0R.610ffc6302d4.css +0 -0
  819. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VDialog-CpWjrJ0R.610ffc6302d4.css.br +0 -0
  820. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VDialog-CpWjrJ0R.610ffc6302d4.css.gz +0 -0
  821. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VDialog-CpWjrJ0R.css +0 -0
  822. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VDialog-CpWjrJ0R.css.br +0 -0
  823. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VDialog-CpWjrJ0R.css.gz +0 -0
  824. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VDivider-DU47sRrT.3d2e17799e5c.css +0 -0
  825. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VDivider-DU47sRrT.3d2e17799e5c.css.br +0 -0
  826. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VDivider-DU47sRrT.3d2e17799e5c.css.gz +0 -0
  827. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VDivider-DU47sRrT.css +0 -0
  828. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VDivider-DU47sRrT.css.br +0 -0
  829. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VDivider-DU47sRrT.css.gz +0 -0
  830. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VExpansionPanels-RsCANmDP.5b17872981df.css +0 -0
  831. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VExpansionPanels-RsCANmDP.5b17872981df.css.br +0 -0
  832. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VExpansionPanels-RsCANmDP.5b17872981df.css.gz +0 -0
  833. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VExpansionPanels-RsCANmDP.css +0 -0
  834. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VExpansionPanels-RsCANmDP.css.br +0 -0
  835. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VExpansionPanels-RsCANmDP.css.gz +0 -0
  836. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VForm-DxBt30-N.138c0b89b6fc.css +0 -0
  837. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VForm-DxBt30-N.138c0b89b6fc.css.br +0 -0
  838. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VForm-DxBt30-N.138c0b89b6fc.css.gz +0 -0
  839. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VForm-DxBt30-N.css +0 -0
  840. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VForm-DxBt30-N.css.br +0 -0
  841. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VForm-DxBt30-N.css.gz +0 -0
  842. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VRadioGroup-Cp9mZ7cb.8e3741381961.css +0 -0
  843. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VRadioGroup-Cp9mZ7cb.8e3741381961.css.br +0 -0
  844. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VRadioGroup-Cp9mZ7cb.8e3741381961.css.gz +0 -0
  845. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VRadioGroup-Cp9mZ7cb.css +0 -0
  846. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VRadioGroup-Cp9mZ7cb.css.br +0 -0
  847. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VRadioGroup-Cp9mZ7cb.css.gz +0 -0
  848. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VSelect-DQPZyfSb.57477277e7dd.css +0 -0
  849. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VSelect-DQPZyfSb.57477277e7dd.css.br +0 -0
  850. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VSelect-DQPZyfSb.57477277e7dd.css.gz +0 -0
  851. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VSelect-DQPZyfSb.css +0 -0
  852. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VSelect-DQPZyfSb.css.br +0 -0
  853. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VSelect-DQPZyfSb.css.gz +0 -0
  854. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VSelectionControl-RqBzwjYi.css +0 -0
  855. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VSelectionControl-RqBzwjYi.css.br +0 -0
  856. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VSelectionControl-RqBzwjYi.css.gz +0 -0
  857. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VSelectionControl-RqBzwjYi.ee7425525e63.css +0 -0
  858. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VSelectionControl-RqBzwjYi.ee7425525e63.css.br +0 -0
  859. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VSelectionControl-RqBzwjYi.ee7425525e63.css.gz +0 -0
  860. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VTable-BsI6FsWH.css +0 -0
  861. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VTable-BsI6FsWH.css.br +0 -0
  862. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VTable-BsI6FsWH.css.gz +0 -0
  863. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VTable-BsI6FsWH.d4c54d44a5ab.css +0 -0
  864. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VTable-BsI6FsWH.d4c54d44a5ab.css.br +0 -0
  865. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VTable-BsI6FsWH.d4c54d44a5ab.css.gz +0 -0
  866. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VWindowItem-QQWUVqMX.c22e707ac99c.css +0 -0
  867. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VWindowItem-QQWUVqMX.c22e707ac99c.css.br +0 -0
  868. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VWindowItem-QQWUVqMX.c22e707ac99c.css.gz +0 -0
  869. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VWindowItem-QQWUVqMX.css +0 -0
  870. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VWindowItem-QQWUVqMX.css.br +0 -0
  871. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/VWindowItem-QQWUVqMX.css.gz +0 -0
  872. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/admin-DJCVf2PA.7ba26fd73264.css +0 -0
  873. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/admin-DJCVf2PA.7ba26fd73264.css.br +0 -0
  874. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/admin-DJCVf2PA.7ba26fd73264.css.gz +0 -0
  875. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/admin-DJCVf2PA.css +0 -0
  876. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/admin-DJCVf2PA.css.br +0 -0
  877. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/admin-DJCVf2PA.css.gz +0 -0
  878. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/admin-menu-hpyUS8ku.18284a11084d.css +0 -0
  879. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/admin-menu-hpyUS8ku.18284a11084d.css.br +0 -0
  880. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/admin-menu-hpyUS8ku.18284a11084d.css.gz +0 -0
  881. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/admin-menu-hpyUS8ku.css +0 -0
  882. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/admin-menu-hpyUS8ku.css.br +0 -0
  883. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/admin-menu-hpyUS8ku.css.gz +0 -0
  884. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/admin-settings-button-progress-Cks9_KN-.a592809d4008.css +0 -0
  885. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/admin-settings-button-progress-Cks9_KN-.css +0 -0
  886. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/change-password-dialog-DL8UMjmX.526f97e577e7.css +0 -0
  887. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/change-password-dialog-DL8UMjmX.526f97e577e7.css.br +0 -0
  888. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/change-password-dialog-DL8UMjmX.526f97e577e7.css.gz +0 -0
  889. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/change-password-dialog-DL8UMjmX.css +0 -0
  890. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/change-password-dialog-DL8UMjmX.css.br +0 -0
  891. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/change-password-dialog-DL8UMjmX.css.gz +0 -0
  892. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/confirm-dialog-YfC8mRQA.be37e8f67e0f.css +0 -0
  893. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/confirm-dialog-YfC8mRQA.css +0 -0
  894. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/copy-to-clipboard-DoUvDJVx.bec27f144aca.js +0 -0
  895. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/copy-to-clipboard-DoUvDJVx.bec27f144aca.js.br +0 -0
  896. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/copy-to-clipboard-DoUvDJVx.js +0 -0
  897. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/copy-to-clipboard-DoUvDJVx.js.br +0 -0
  898. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/datetime-column-Bt7J1qEf.css +0 -0
  899. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/datetime-column-Bt7J1qEf.css.br +0 -0
  900. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/datetime-column-Bt7J1qEf.d83164b4d4cb.css +0 -0
  901. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/datetime-column-Bt7J1qEf.d83164b4d4cb.css.br +0 -0
  902. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/flag-tab-CESc_7Pq.2260edfa4c38.css +0 -0
  903. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/flag-tab-CESc_7Pq.2260edfa4c38.css.br +0 -0
  904. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/flag-tab-CESc_7Pq.2260edfa4c38.css.gz +0 -0
  905. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/flag-tab-CESc_7Pq.css +0 -0
  906. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/flag-tab-CESc_7Pq.css.br +0 -0
  907. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/flag-tab-CESc_7Pq.css.gz +0 -0
  908. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/forwardRefs-C3Z4qL85.48fb131ece85.css +0 -0
  909. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/forwardRefs-C3Z4qL85.48fb131ece85.css.br +0 -0
  910. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/forwardRefs-C3Z4qL85.48fb131ece85.css.gz +0 -0
  911. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/forwardRefs-C3Z4qL85.css +0 -0
  912. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/forwardRefs-C3Z4qL85.css.br +0 -0
  913. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/forwardRefs-C3Z4qL85.css.gz +0 -0
  914. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/group-tab-CQ_Qw6h8.078d0a9225ba.css +0 -0
  915. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/group-tab-CQ_Qw6h8.078d0a9225ba.css.br +0 -0
  916. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/group-tab-CQ_Qw6h8.078d0a9225ba.css.gz +0 -0
  917. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/group-tab-CQ_Qw6h8.css +0 -0
  918. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/group-tab-CQ_Qw6h8.css.br +0 -0
  919. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/group-tab-CQ_Qw6h8.css.gz +0 -0
  920. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/http-error-CB3k5P-n.82d886ac81c7.css +0 -0
  921. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/http-error-CB3k5P-n.82d886ac81c7.css.br +0 -0
  922. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/http-error-CB3k5P-n.82d886ac81c7.css.gz +0 -0
  923. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/http-error-CB3k5P-n.css +0 -0
  924. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/http-error-CB3k5P-n.css.br +0 -0
  925. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/http-error-CB3k5P-n.css.gz +0 -0
  926. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/index-Czf-fUM7.50a7466d956f.css +0 -0
  927. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/index-Czf-fUM7.50a7466d956f.css.br +0 -0
  928. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/index-Czf-fUM7.50a7466d956f.css.gz +0 -0
  929. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/index-Czf-fUM7.css +0 -0
  930. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/index-Czf-fUM7.css.br +0 -0
  931. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/index-Czf-fUM7.css.gz +0 -0
  932. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/library-tab-5StL67ei.0fad8998a237.css +0 -0
  933. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/library-tab-5StL67ei.0fad8998a237.css.br +0 -0
  934. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/library-tab-5StL67ei.0fad8998a237.css.gz +0 -0
  935. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/library-tab-5StL67ei.css +0 -0
  936. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/library-tab-5StL67ei.css.br +0 -0
  937. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/library-tab-5StL67ei.css.gz +0 -0
  938. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/main-B8_0rUnw.a9be0875ae25.css +0 -0
  939. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/main-B8_0rUnw.a9be0875ae25.css.br +0 -0
  940. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/main-B8_0rUnw.a9be0875ae25.css.gz +0 -0
  941. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/main-B8_0rUnw.css +0 -0
  942. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/main-B8_0rUnw.css.br +0 -0
  943. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/main-B8_0rUnw.css.gz +0 -0
  944. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/materialdesignicons-webfont-B7mPwVP_.6e435534bd35.ttf +0 -0
  945. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/materialdesignicons-webfont-B7mPwVP_.6e435534bd35.ttf.br +0 -0
  946. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/materialdesignicons-webfont-B7mPwVP_.6e435534bd35.ttf.gz +0 -0
  947. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/materialdesignicons-webfont-B7mPwVP_.ttf +0 -0
  948. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/materialdesignicons-webfont-B7mPwVP_.ttf.br +0 -0
  949. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/materialdesignicons-webfont-B7mPwVP_.ttf.gz +0 -0
  950. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/materialdesignicons-webfont-CSr8KVlo.8ced95a05e3c.eot +0 -0
  951. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/materialdesignicons-webfont-CSr8KVlo.8ced95a05e3c.eot.br +0 -0
  952. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/materialdesignicons-webfont-CSr8KVlo.8ced95a05e3c.eot.gz +0 -0
  953. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/materialdesignicons-webfont-CSr8KVlo.eot +0 -0
  954. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/materialdesignicons-webfont-CSr8KVlo.eot.br +0 -0
  955. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/materialdesignicons-webfont-CSr8KVlo.eot.gz +0 -0
  956. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/materialdesignicons-webfont-Dp5v-WZN.1d7bcee1b302.woff2 +0 -0
  957. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/materialdesignicons-webfont-Dp5v-WZN.woff2 +0 -0
  958. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/materialdesignicons-webfont-PXm3-2wK.026b7ac9c43c.woff +0 -0
  959. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/materialdesignicons-webfont-PXm3-2wK.woff +0 -0
  960. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/pagination-toolbar-rUdD4-Qi.3a224c7806a5.css +0 -0
  961. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/pagination-toolbar-rUdD4-Qi.3a224c7806a5.css.br +0 -0
  962. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/pagination-toolbar-rUdD4-Qi.3a224c7806a5.css.gz +0 -0
  963. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/pagination-toolbar-rUdD4-Qi.css +0 -0
  964. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/pagination-toolbar-rUdD4-Qi.css.br +0 -0
  965. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/pagination-toolbar-rUdD4-Qi.css.gz +0 -0
  966. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/pdf-doc-DxqOo2k2.42496ffbf35b.css +0 -0
  967. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/pdf-doc-DxqOo2k2.42496ffbf35b.css.br +0 -0
  968. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/pdf-doc-DxqOo2k2.42496ffbf35b.css.gz +0 -0
  969. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/pdf-doc-DxqOo2k2.css +0 -0
  970. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/pdf-doc-DxqOo2k2.css.br +0 -0
  971. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/pdf-doc-DxqOo2k2.css.gz +0 -0
  972. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/reader-HE07eoaG.8626eeb7c718.css +0 -0
  973. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/reader-HE07eoaG.8626eeb7c718.css.br +0 -0
  974. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/reader-HE07eoaG.8626eeb7c718.css.gz +0 -0
  975. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/reader-HE07eoaG.css +0 -0
  976. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/reader-HE07eoaG.css.br +0 -0
  977. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/reader-HE07eoaG.css.gz +0 -0
  978. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/relation-chips-CpiT_4k-.b72d78f512e6.css +0 -0
  979. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/relation-chips-CpiT_4k-.b72d78f512e6.css.br +0 -0
  980. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/relation-chips-CpiT_4k-.b72d78f512e6.css.gz +0 -0
  981. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/relation-chips-CpiT_4k-.css +0 -0
  982. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/relation-chips-CpiT_4k-.css.br +0 -0
  983. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/relation-chips-CpiT_4k-.css.gz +0 -0
  984. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/settings-drawer-B-pwZRSy.8fc8b237bb52.css +0 -0
  985. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/settings-drawer-B-pwZRSy.8fc8b237bb52.css.br +0 -0
  986. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/settings-drawer-B-pwZRSy.8fc8b237bb52.css.gz +0 -0
  987. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/settings-drawer-B-pwZRSy.css +0 -0
  988. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/settings-drawer-B-pwZRSy.css.br +0 -0
  989. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/settings-drawer-B-pwZRSy.css.gz +0 -0
  990. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/stats-tab-Dpqh5pF9.8dba36f90032.css +0 -0
  991. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/stats-tab-Dpqh5pF9.8dba36f90032.css.br +0 -0
  992. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/stats-tab-Dpqh5pF9.8dba36f90032.css.gz +0 -0
  993. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/stats-tab-Dpqh5pF9.css +0 -0
  994. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/stats-tab-Dpqh5pF9.css.br +0 -0
  995. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/stats-tab-Dpqh5pF9.css.gz +0 -0
  996. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/task-tab-CW4DQ3KN.81812f9208e5.css +0 -0
  997. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/task-tab-CW4DQ3KN.81812f9208e5.css.br +0 -0
  998. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/task-tab-CW4DQ3KN.81812f9208e5.css.gz +0 -0
  999. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/task-tab-CW4DQ3KN.css +0 -0
  1000. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/task-tab-CW4DQ3KN.css.br +0 -0
  1001. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/task-tab-CW4DQ3KN.css.gz +0 -0
  1002. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/unauthorized-BBwsmi0O.19d4882b821d.css +0 -0
  1003. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/unauthorized-BBwsmi0O.19d4882b821d.css.br +0 -0
  1004. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/unauthorized-BBwsmi0O.19d4882b821d.css.gz +0 -0
  1005. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/unauthorized-BBwsmi0O.css +0 -0
  1006. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/unauthorized-BBwsmi0O.css.br +0 -0
  1007. {codex-1.8.9 → codex-1.8.11}/codex/static_root/assets/unauthorized-BBwsmi0O.css.gz +0 -0
  1008. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/folder.83168d8d3119.svg +0 -0
  1009. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/folder.83168d8d3119.svg.br +0 -0
  1010. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/folder.83168d8d3119.svg.gz +0 -0
  1011. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/folder.svg +0 -0
  1012. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/folder.svg.br +0 -0
  1013. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/folder.svg.gz +0 -0
  1014. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/imprint.3ca7a779b949.svg +0 -0
  1015. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/imprint.3ca7a779b949.svg.br +0 -0
  1016. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/imprint.3ca7a779b949.svg.gz +0 -0
  1017. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/imprint.svg +0 -0
  1018. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/imprint.svg.br +0 -0
  1019. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/imprint.svg.gz +0 -0
  1020. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/logo-32.5688944495bf.webp +0 -0
  1021. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/logo-32.webp +0 -0
  1022. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/logo-maskable-180.c58d966aa64e.webp +0 -0
  1023. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/logo-maskable-180.webp +0 -0
  1024. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/logo-maskable.aeef5c2fffc8.svg +0 -0
  1025. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/logo-maskable.aeef5c2fffc8.svg.br +0 -0
  1026. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/logo-maskable.aeef5c2fffc8.svg.gz +0 -0
  1027. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/logo-maskable.svg +0 -0
  1028. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/logo-maskable.svg.br +0 -0
  1029. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/logo-maskable.svg.gz +0 -0
  1030. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/logo.00c902973831.svg +0 -0
  1031. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/logo.00c902973831.svg.br +0 -0
  1032. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/logo.00c902973831.svg.gz +0 -0
  1033. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/logo.svg +0 -0
  1034. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/logo.svg.br +0 -0
  1035. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/logo.svg.gz +0 -0
  1036. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/missing-cover-165.f4bb7740084c.webp +0 -0
  1037. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/missing-cover-165.webp +0 -0
  1038. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/missing-cover.7329518c5972.svg +0 -0
  1039. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/missing-cover.7329518c5972.svg.br +0 -0
  1040. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/missing-cover.7329518c5972.svg.gz +0 -0
  1041. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/missing-cover.svg +0 -0
  1042. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/missing-cover.svg.br +0 -0
  1043. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/missing-cover.svg.gz +0 -0
  1044. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/publisher.82d378fcd601.svg +0 -0
  1045. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/publisher.82d378fcd601.svg.br +0 -0
  1046. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/publisher.82d378fcd601.svg.gz +0 -0
  1047. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/publisher.svg +0 -0
  1048. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/publisher.svg.br +0 -0
  1049. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/publisher.svg.gz +0 -0
  1050. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/series.b092bbac0c2a.svg +0 -0
  1051. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/series.b092bbac0c2a.svg.br +0 -0
  1052. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/series.b092bbac0c2a.svg.gz +0 -0
  1053. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/series.svg +0 -0
  1054. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/series.svg.br +0 -0
  1055. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/series.svg.gz +0 -0
  1056. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/story-arc.884f7b1d95bd.svg +0 -0
  1057. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/story-arc.884f7b1d95bd.svg.br +0 -0
  1058. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/story-arc.884f7b1d95bd.svg.gz +0 -0
  1059. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/story-arc.svg +0 -0
  1060. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/story-arc.svg.br +0 -0
  1061. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/story-arc.svg.gz +0 -0
  1062. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/volume.516ec0c3018d.svg +0 -0
  1063. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/volume.516ec0c3018d.svg.br +0 -0
  1064. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/volume.516ec0c3018d.svg.gz +0 -0
  1065. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/volume.svg +0 -0
  1066. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/volume.svg.br +0 -0
  1067. {codex-1.8.9 → codex-1.8.11}/codex/static_root/img/volume.svg.gz +0 -0
  1068. {codex-1.8.9 → codex-1.8.11}/codex/static_root/pwa/offline.7bfaf9f94bf9.html +0 -0
  1069. {codex-1.8.9 → codex-1.8.11}/codex/static_root/pwa/offline.7bfaf9f94bf9.html.br +0 -0
  1070. {codex-1.8.9 → codex-1.8.11}/codex/static_root/pwa/offline.7bfaf9f94bf9.html.gz +0 -0
  1071. {codex-1.8.9 → codex-1.8.11}/codex/static_root/pwa/offline.html +0 -0
  1072. {codex-1.8.9 → codex-1.8.11}/codex/static_root/pwa/offline.html.br +0 -0
  1073. {codex-1.8.9 → codex-1.8.11}/codex/static_root/pwa/offline.html.gz +0 -0
  1074. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-theme.min.1d4b05b397c3.css +0 -0
  1075. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-theme.min.1d4b05b397c3.css.br +0 -0
  1076. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-theme.min.1d4b05b397c3.css.gz +0 -0
  1077. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-theme.min.css +0 -0
  1078. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.51806092cc05.map +0 -0
  1079. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.51806092cc05.map.br +0 -0
  1080. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.51806092cc05.map.gz +0 -0
  1081. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.br +0 -0
  1082. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.gz +0 -0
  1083. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.map +0 -0
  1084. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.map.br +0 -0
  1085. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-theme.min.css.map.gz +0 -0
  1086. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-tweaks.css +0 -0
  1087. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-tweaks.css.br +0 -0
  1088. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-tweaks.css.gz +0 -0
  1089. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-tweaks.ee4ee6acf9eb.css +0 -0
  1090. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-tweaks.ee4ee6acf9eb.css.br +0 -0
  1091. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap-tweaks.ee4ee6acf9eb.css.gz +0 -0
  1092. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap.min.css +0 -0
  1093. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap.min.css.br +0 -0
  1094. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap.min.css.cafbda9c0e9e.map +0 -0
  1095. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap.min.css.cafbda9c0e9e.map.br +0 -0
  1096. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap.min.css.cafbda9c0e9e.map.gz +0 -0
  1097. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap.min.css.gz +0 -0
  1098. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap.min.css.map +0 -0
  1099. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap.min.css.map.br +0 -0
  1100. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap.min.css.map.gz +0 -0
  1101. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap.min.f17d4516b026.css +0 -0
  1102. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap.min.f17d4516b026.css.br +0 -0
  1103. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/bootstrap.min.f17d4516b026.css.gz +0 -0
  1104. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/default.789dfb5732d7.css +0 -0
  1105. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/default.789dfb5732d7.css.br +0 -0
  1106. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/default.789dfb5732d7.css.gz +0 -0
  1107. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/default.css +0 -0
  1108. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/default.css.br +0 -0
  1109. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/default.css.gz +0 -0
  1110. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css +0 -0
  1111. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css.br +0 -0
  1112. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css.gz +0 -0
  1113. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/font-awesome-4.0.3.css +0 -0
  1114. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/font-awesome-4.0.3.css.br +0 -0
  1115. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/font-awesome-4.0.3.css.gz +0 -0
  1116. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/prettify.a987f72342ee.css +0 -0
  1117. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/prettify.a987f72342ee.css.br +0 -0
  1118. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/prettify.a987f72342ee.css.gz +0 -0
  1119. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/prettify.css +0 -0
  1120. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/prettify.css.br +0 -0
  1121. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/css/prettify.css.gz +0 -0
  1122. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/base.css +0 -0
  1123. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/base.css.br +0 -0
  1124. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/base.css.gz +0 -0
  1125. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/base.e630f8f4990e.css +0 -0
  1126. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/base.e630f8f4990e.css.br +0 -0
  1127. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/base.e630f8f4990e.css.gz +0 -0
  1128. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/highlight.css +0 -0
  1129. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/highlight.css.br +0 -0
  1130. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/highlight.css.gz +0 -0
  1131. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/highlight.e0e4d973c6d7.css +0 -0
  1132. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/highlight.e0e4d973c6d7.css.br +0 -0
  1133. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/highlight.e0e4d973c6d7.css.gz +0 -0
  1134. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css +0 -0
  1135. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css.br +0 -0
  1136. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css.gz +0 -0
  1137. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.css +0 -0
  1138. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.css.br +0 -0
  1139. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/css/jquery.json-view.min.css.gz +0 -0
  1140. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/img/favicon.5195b4d0f3eb.ico +0 -0
  1141. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/img/favicon.5195b4d0f3eb.ico.br +0 -0
  1142. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/img/favicon.5195b4d0f3eb.ico.gz +0 -0
  1143. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/img/favicon.ico +0 -0
  1144. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/img/favicon.ico.br +0 -0
  1145. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/img/favicon.ico.gz +0 -0
  1146. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/img/grid.a4b938cf382b.png +0 -0
  1147. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/img/grid.png +0 -0
  1148. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/api.18a5ba8a1bd8.js +0 -0
  1149. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/api.18a5ba8a1bd8.js.br +0 -0
  1150. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/api.18a5ba8a1bd8.js.gz +0 -0
  1151. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/api.js +0 -0
  1152. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/api.js.br +0 -0
  1153. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/api.js.gz +0 -0
  1154. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/highlight.pack.479b5f21dcba.js +0 -0
  1155. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/highlight.pack.479b5f21dcba.js.br +0 -0
  1156. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/highlight.pack.479b5f21dcba.js.gz +0 -0
  1157. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/highlight.pack.js +0 -0
  1158. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/highlight.pack.js.br +0 -0
  1159. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/highlight.pack.js.gz +0 -0
  1160. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js +0 -0
  1161. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js.br +0 -0
  1162. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js.gz +0 -0
  1163. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.js +0 -0
  1164. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.js.br +0 -0
  1165. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/docs/js/jquery.json-view.min.js.gz +0 -0
  1166. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/fontawesome-webfont.3293616ec0c6.woff +0 -0
  1167. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg +0 -0
  1168. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg.br +0 -0
  1169. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg.gz +0 -0
  1170. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/fontawesome-webfont.8b27bc96115c.eot +0 -0
  1171. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf +0 -0
  1172. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf.br +0 -0
  1173. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf.gz +0 -0
  1174. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/fontawesome-webfont.eot +0 -0
  1175. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/fontawesome-webfont.svg +0 -0
  1176. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/fontawesome-webfont.svg.br +0 -0
  1177. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/fontawesome-webfont.svg.gz +0 -0
  1178. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/fontawesome-webfont.ttf +0 -0
  1179. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/fontawesome-webfont.ttf.br +0 -0
  1180. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/fontawesome-webfont.ttf.gz +0 -0
  1181. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/fontawesome-webfont.woff +0 -0
  1182. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg +0 -0
  1183. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg.br +0 -0
  1184. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg.gz +0 -0
  1185. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.448c34a56d69.woff2 +0 -0
  1186. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf +0 -0
  1187. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf.br +0 -0
  1188. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf.gz +0 -0
  1189. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.eot +0 -0
  1190. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.f4769f9bdb74.eot +0 -0
  1191. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.fa2772327f55.woff +0 -0
  1192. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.svg +0 -0
  1193. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.svg.br +0 -0
  1194. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.svg.gz +0 -0
  1195. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.ttf +0 -0
  1196. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.ttf.br +0 -0
  1197. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.ttf.gz +0 -0
  1198. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.woff +0 -0
  1199. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/fonts/glyphicons-halflings-regular.woff2 +0 -0
  1200. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/img/glyphicons-halflings-white.9bbc6e960299.png +0 -0
  1201. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/img/glyphicons-halflings-white.png +0 -0
  1202. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/img/glyphicons-halflings.90233c9067e9.png +0 -0
  1203. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/img/glyphicons-halflings.png +0 -0
  1204. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/img/grid.a4b938cf382b.png +0 -0
  1205. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/img/grid.png +0 -0
  1206. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/ajax-form.4e1cdcb7acab.js +0 -0
  1207. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/ajax-form.4e1cdcb7acab.js.br +0 -0
  1208. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/ajax-form.4e1cdcb7acab.js.gz +0 -0
  1209. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/ajax-form.js +0 -0
  1210. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/ajax-form.js.br +0 -0
  1211. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/ajax-form.js.gz +0 -0
  1212. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/bootstrap.min.2f34b630ffe3.js +0 -0
  1213. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/bootstrap.min.2f34b630ffe3.js.br +0 -0
  1214. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/bootstrap.min.2f34b630ffe3.js.gz +0 -0
  1215. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/bootstrap.min.js +0 -0
  1216. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/bootstrap.min.js.br +0 -0
  1217. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/bootstrap.min.js.gz +0 -0
  1218. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/coreapi-0.1.1.8851fb9336c9.js +0 -0
  1219. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/coreapi-0.1.1.8851fb9336c9.js.br +0 -0
  1220. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/coreapi-0.1.1.8851fb9336c9.js.gz +0 -0
  1221. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/coreapi-0.1.1.js +0 -0
  1222. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/coreapi-0.1.1.js.br +0 -0
  1223. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/coreapi-0.1.1.js.gz +0 -0
  1224. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/csrf.455080a7b2ce.js +0 -0
  1225. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/csrf.455080a7b2ce.js.br +0 -0
  1226. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/csrf.455080a7b2ce.js.gz +0 -0
  1227. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/csrf.js +0 -0
  1228. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/csrf.js.br +0 -0
  1229. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/csrf.js.gz +0 -0
  1230. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/default.5b08897dbdc3.js +0 -0
  1231. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/default.5b08897dbdc3.js.br +0 -0
  1232. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/default.5b08897dbdc3.js.gz +0 -0
  1233. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/default.js +0 -0
  1234. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/default.js.br +0 -0
  1235. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/default.js.gz +0 -0
  1236. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/jquery-3.7.1.min.2c872dbe60f4.js +0 -0
  1237. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/jquery-3.7.1.min.2c872dbe60f4.js.br +0 -0
  1238. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/jquery-3.7.1.min.2c872dbe60f4.js.gz +0 -0
  1239. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/jquery-3.7.1.min.js +0 -0
  1240. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/jquery-3.7.1.min.js.br +0 -0
  1241. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/jquery-3.7.1.min.js.gz +0 -0
  1242. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/load-ajax-form.8cdb3a9f3466.js +0 -0
  1243. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/load-ajax-form.8cdb3a9f3466.js.br +0 -0
  1244. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/load-ajax-form.js +0 -0
  1245. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/load-ajax-form.js.br +0 -0
  1246. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/prettify-min.709bfcc456c6.js +0 -0
  1247. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/prettify-min.709bfcc456c6.js.br +0 -0
  1248. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/prettify-min.709bfcc456c6.js.gz +0 -0
  1249. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/prettify-min.js +0 -0
  1250. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/prettify-min.js.br +0 -0
  1251. {codex-1.8.9 → codex-1.8.11}/codex/static_root/rest_framework/js/prettify-min.js.gz +0 -0
  1252. {codex-1.8.9 → codex-1.8.11}/codex/static_root/robots.b6216d61c03e.txt +0 -0
  1253. {codex-1.8.9 → codex-1.8.11}/codex/static_root/robots.txt +0 -0
  1254. {codex-1.8.9 → codex-1.8.11}/codex/static_src/img/folder.svg +0 -0
  1255. {codex-1.8.9 → codex-1.8.11}/codex/static_src/img/imprint.svg +0 -0
  1256. {codex-1.8.9 → codex-1.8.11}/codex/static_src/img/logo-32.webp +0 -0
  1257. {codex-1.8.9 → codex-1.8.11}/codex/static_src/img/logo-maskable-180.webp +0 -0
  1258. {codex-1.8.9 → codex-1.8.11}/codex/static_src/img/logo-maskable.svg +0 -0
  1259. {codex-1.8.9 → codex-1.8.11}/codex/static_src/img/logo.svg +0 -0
  1260. {codex-1.8.9 → codex-1.8.11}/codex/static_src/img/missing-cover-165.webp +0 -0
  1261. {codex-1.8.9 → codex-1.8.11}/codex/static_src/img/missing-cover.svg +0 -0
  1262. {codex-1.8.9 → codex-1.8.11}/codex/static_src/img/publisher.svg +0 -0
  1263. {codex-1.8.9 → codex-1.8.11}/codex/static_src/img/series.svg +0 -0
  1264. {codex-1.8.9 → codex-1.8.11}/codex/static_src/img/story-arc.svg +0 -0
  1265. {codex-1.8.9 → codex-1.8.11}/codex/static_src/img/volume.svg +0 -0
  1266. {codex-1.8.9 → codex-1.8.11}/codex/static_src/pwa/offline.html +0 -0
  1267. {codex-1.8.9 → codex-1.8.11}/codex/static_src/robots.txt +0 -0
  1268. {codex-1.8.9 → codex-1.8.11}/codex/templates/README.md +0 -0
  1269. {codex-1.8.9 → codex-1.8.11}/codex/templates/headers-icons.html +0 -0
  1270. {codex-1.8.9 → codex-1.8.11}/codex/templates/headers-script-globals.html +0 -0
  1271. {codex-1.8.9 → codex-1.8.11}/codex/templates/index.html +0 -0
  1272. {codex-1.8.9 → codex-1.8.11}/codex/templates/opds_v1/index.xml +0 -0
  1273. {codex-1.8.9 → codex-1.8.11}/codex/templates/opds_v1/opensearch_v1.xml +0 -0
  1274. {codex-1.8.9 → codex-1.8.11}/codex/templates/pwa/headers.html +0 -0
  1275. {codex-1.8.9 → codex-1.8.11}/codex/templates/pwa/manifest.webmanifest +0 -0
  1276. {codex-1.8.9 → codex-1.8.11}/codex/templates/pwa/serviceworker-register.js +0 -0
  1277. {codex-1.8.9 → codex-1.8.11}/codex/templates/pwa/serviceworker.js +0 -0
  1278. {codex-1.8.9 → codex-1.8.11}/codex/templates/swagger-ui.html +0 -0
  1279. {codex-1.8.9 → codex-1.8.11}/codex/urls/__init__.py +0 -0
  1280. {codex-1.8.9 → codex-1.8.11}/codex/urls/api/__init__.py +0 -0
  1281. {codex-1.8.9 → codex-1.8.11}/codex/urls/api/admin.py +0 -0
  1282. {codex-1.8.9 → codex-1.8.11}/codex/urls/api/auth.py +0 -0
  1283. {codex-1.8.9 → codex-1.8.11}/codex/urls/api/browser.py +0 -0
  1284. {codex-1.8.9 → codex-1.8.11}/codex/urls/api/reader.py +0 -0
  1285. {codex-1.8.9 → codex-1.8.11}/codex/urls/api/root.py +0 -0
  1286. {codex-1.8.9 → codex-1.8.11}/codex/urls/api/v3.py +0 -0
  1287. {codex-1.8.9 → codex-1.8.11}/codex/urls/app.py +0 -0
  1288. {codex-1.8.9 → codex-1.8.11}/codex/urls/const.py +0 -0
  1289. {codex-1.8.9 → codex-1.8.11}/codex/urls/converters.py +0 -0
  1290. {codex-1.8.9 → codex-1.8.11}/codex/urls/opds/__init__.py +0 -0
  1291. {codex-1.8.9 → codex-1.8.11}/codex/urls/opds/authentication.py +0 -0
  1292. {codex-1.8.9 → codex-1.8.11}/codex/urls/opds/binary.py +0 -0
  1293. {codex-1.8.9 → codex-1.8.11}/codex/urls/opds/root.py +0 -0
  1294. {codex-1.8.9 → codex-1.8.11}/codex/urls/opds/v1.py +0 -0
  1295. {codex-1.8.9 → codex-1.8.11}/codex/urls/opds/v2.py +0 -0
  1296. {codex-1.8.9 → codex-1.8.11}/codex/urls/pwa.py +0 -0
  1297. {codex-1.8.9 → codex-1.8.11}/codex/urls/root.py +0 -0
  1298. {codex-1.8.9 → codex-1.8.11}/codex/urls/spectacular.py +0 -0
  1299. {codex-1.8.9 → codex-1.8.11}/codex/util.py +0 -0
  1300. {codex-1.8.9 → codex-1.8.11}/codex/version.py +0 -0
  1301. {codex-1.8.9 → codex-1.8.11}/codex/views/README.md +0 -0
  1302. {codex-1.8.9 → codex-1.8.11}/codex/views/__init__.py +0 -0
  1303. {codex-1.8.9 → codex-1.8.11}/codex/views/admin/__init__.py +0 -0
  1304. {codex-1.8.9 → codex-1.8.11}/codex/views/admin/api_key.py +0 -0
  1305. {codex-1.8.9 → codex-1.8.11}/codex/views/admin/auth.py +0 -0
  1306. {codex-1.8.9 → codex-1.8.11}/codex/views/admin/flag.py +0 -0
  1307. {codex-1.8.9 → codex-1.8.11}/codex/views/admin/group.py +0 -0
  1308. {codex-1.8.9 → codex-1.8.11}/codex/views/admin/library.py +0 -0
  1309. {codex-1.8.9 → codex-1.8.11}/codex/views/admin/permissions.py +0 -0
  1310. {codex-1.8.9 → codex-1.8.11}/codex/views/admin/stats.py +0 -0
  1311. {codex-1.8.9 → codex-1.8.11}/codex/views/admin/tasks.py +0 -0
  1312. {codex-1.8.9 → codex-1.8.11}/codex/views/admin/user.py +0 -0
  1313. {codex-1.8.9 → codex-1.8.11}/codex/views/auth.py +0 -0
  1314. {codex-1.8.9 → codex-1.8.11}/codex/views/bookmark.py +0 -0
  1315. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/__init__.py +0 -0
  1316. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/annotate/__init__.py +0 -0
  1317. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/annotate/bookmark.py +0 -0
  1318. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/annotate/card.py +0 -0
  1319. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/annotate/order.py +0 -0
  1320. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/bookmark.py +0 -0
  1321. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/breadcrumbs.py +0 -0
  1322. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/browser.py +0 -0
  1323. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/choices.py +0 -0
  1324. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/cover.py +0 -0
  1325. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/download.py +0 -0
  1326. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/filters/__init__.py +0 -0
  1327. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/filters/bookmark.py +0 -0
  1328. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/filters/field.py +0 -0
  1329. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/filters/filter.py +0 -0
  1330. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/filters/group.py +0 -0
  1331. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/filters/search/__init__.py +0 -0
  1332. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/filters/search/field/__init__.py +0 -0
  1333. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/filters/search/field/column.py +0 -0
  1334. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/filters/search/field/expression.py +0 -0
  1335. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/filters/search/field/filter.py +0 -0
  1336. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/filters/search/field/optimize.py +0 -0
  1337. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/filters/search/field/parse.py +0 -0
  1338. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/filters/search/fts.py +0 -0
  1339. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/filters/search/parse.py +0 -0
  1340. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/group_mtime.py +0 -0
  1341. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/metadata/__init__.py +0 -0
  1342. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/metadata/annotate.py +0 -0
  1343. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/metadata/const.py +0 -0
  1344. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/metadata/copy_intersections.py +0 -0
  1345. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/metadata/query_intersections.py +0 -0
  1346. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/mtime.py +0 -0
  1347. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/order_by.py +0 -0
  1348. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/page_in_bounds.py +0 -0
  1349. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/paginate.py +0 -0
  1350. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/params.py +0 -0
  1351. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/settings.py +0 -0
  1352. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/title.py +0 -0
  1353. {codex-1.8.9 → codex-1.8.11}/codex/views/browser/validate.py +0 -0
  1354. {codex-1.8.9 → codex-1.8.11}/codex/views/const.py +0 -0
  1355. {codex-1.8.9 → codex-1.8.11}/codex/views/download.py +0 -0
  1356. {codex-1.8.9 → codex-1.8.11}/codex/views/error.py +0 -0
  1357. {codex-1.8.9 → codex-1.8.11}/codex/views/exceptions.py +0 -0
  1358. {codex-1.8.9 → codex-1.8.11}/codex/views/frontend.py +0 -0
  1359. {codex-1.8.9 → codex-1.8.11}/codex/views/lazy_import.py +0 -0
  1360. {codex-1.8.9 → codex-1.8.11}/codex/views/mixins.py +0 -0
  1361. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/__init__.py +0 -0
  1362. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/auth.py +0 -0
  1363. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/authentication_v1.py +0 -0
  1364. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/binary.py +0 -0
  1365. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/const.py +0 -0
  1366. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/urls.py +0 -0
  1367. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/util.py +0 -0
  1368. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v1/__init__.py +0 -0
  1369. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v1/data.py +0 -0
  1370. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v1/entry/__init__.py +0 -0
  1371. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v1/entry/data.py +0 -0
  1372. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v1/entry/entry.py +0 -0
  1373. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v1/entry/links.py +0 -0
  1374. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v1/facets.py +0 -0
  1375. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v1/feed.py +0 -0
  1376. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v1/links.py +0 -0
  1377. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v1/opensearch_v1.py +0 -0
  1378. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v2/__init__.py +0 -0
  1379. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v2/const.py +0 -0
  1380. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v2/feed.py +0 -0
  1381. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v2/href.py +0 -0
  1382. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v2/links.py +0 -0
  1383. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v2/progression.py +0 -0
  1384. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v2/publications.py +0 -0
  1385. {codex-1.8.9 → codex-1.8.11}/codex/views/opds/v2/top_links.py +0 -0
  1386. {codex-1.8.9 → codex-1.8.11}/codex/views/public.py +0 -0
  1387. {codex-1.8.9 → codex-1.8.11}/codex/views/pwa.py +0 -0
  1388. {codex-1.8.9 → codex-1.8.11}/codex/views/reader/__init__.py +0 -0
  1389. {codex-1.8.9 → codex-1.8.11}/codex/views/reader/arcs.py +0 -0
  1390. {codex-1.8.9 → codex-1.8.11}/codex/views/reader/books.py +0 -0
  1391. {codex-1.8.9 → codex-1.8.11}/codex/views/reader/page.py +0 -0
  1392. {codex-1.8.9 → codex-1.8.11}/codex/views/reader/params.py +0 -0
  1393. {codex-1.8.9 → codex-1.8.11}/codex/views/reader/reader.py +0 -0
  1394. {codex-1.8.9 → codex-1.8.11}/codex/views/reader/settings.py +0 -0
  1395. {codex-1.8.9 → codex-1.8.11}/codex/views/session.py +0 -0
  1396. {codex-1.8.9 → codex-1.8.11}/codex/views/settings.py +0 -0
  1397. {codex-1.8.9 → codex-1.8.11}/codex/views/template.py +0 -0
  1398. {codex-1.8.9 → codex-1.8.11}/codex/views/timezone.py +0 -0
  1399. {codex-1.8.9 → codex-1.8.11}/codex/views/util.py +0 -0
  1400. {codex-1.8.9 → codex-1.8.11}/codex/views/version.py +0 -0
  1401. {codex-1.8.9 → codex-1.8.11}/codex/websockets/README.md +0 -0
  1402. {codex-1.8.9 → codex-1.8.11}/codex/websockets/__init__.py +0 -0
  1403. {codex-1.8.9 → codex-1.8.11}/codex/websockets/aio_queue.py +0 -0
  1404. {codex-1.8.9 → codex-1.8.11}/codex/websockets/consumers.py +0 -0
  1405. {codex-1.8.9 → codex-1.8.11}/codex/websockets/listener.py +0 -0
  1406. {codex-1.8.9 → codex-1.8.11}/tests/README.md +0 -0
  1407. {codex-1.8.9 → codex-1.8.11}/tests/__init__.py +0 -0
  1408. {codex-1.8.9 → codex-1.8.11}/tests/files/comicbox-2-example.cbz +0 -0
  1409. {codex-1.8.9 → codex-1.8.11}/tests/files/comicbox-2-update.cbz +0 -0
  1410. {codex-1.8.9 → codex-1.8.11}/tests/files/comicbox.example.yaml +0 -0
  1411. {codex-1.8.9 → codex-1.8.11}/tests/files/comicbox.update.yaml +0 -0
  1412. {codex-1.8.9 → codex-1.8.11}/tests/importer/__init__.py +0 -0
  1413. {codex-1.8.9 → codex-1.8.11}/tests/nginx-local-codex.conf +0 -0
  1414. {codex-1.8.9 → codex-1.8.11}/tests/test_asgi.py +0 -0
  1415. {codex-1.8.9 → codex-1.8.11}/tests/test_models.py +0 -0
codex-1.8.11/PKG-INFO ADDED
@@ -0,0 +1,592 @@
1
+ Metadata-Version: 2.4
2
+ Name: codex
3
+ Version: 1.8.11
4
+ Summary: A comic archive web server.
5
+ Project-URL: News, https://codex-comic-reader.readthedocs.io/NEWS/
6
+ Project-URL: Docker Image, https://hub.docker.com/r/ajslater/codex
7
+ Project-URL: Report Issues, https://github.com/ajslater/codex/issues
8
+ Project-URL: documentation, https://codex-comic-reader.readthedocs.io
9
+ Project-URL: demo, https://demo.codex-reader.app/
10
+ Project-URL: repository, https://github.com/ajslater/codex
11
+ Author-email: AJ Slater <aj@slater.net>
12
+ License: GPL-3.0-only
13
+ License-File: LICENSE
14
+ Keywords: cb7,cbr,cbt,cbz,comic,pdf
15
+ Classifier: Development Status :: 5 - Production/Stable
16
+ Classifier: Environment :: Web Environment
17
+ Classifier: Framework :: Django :: 5.1
18
+ Classifier: Intended Audience :: End Users/Desktop
19
+ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
20
+ Classifier: Natural Language :: English
21
+ Classifier: Operating System :: OS Independent
22
+ Classifier: Programming Language :: JavaScript
23
+ Classifier: Programming Language :: Python :: 3 :: Only
24
+ Classifier: Topic :: Internet :: WWW/HTTP
25
+ Classifier: Topic :: Multimedia :: Graphics :: Viewers
26
+ Requires-Python: <4.0,>=3.10
27
+ Requires-Dist: aioprocessing~=2.0
28
+ Requires-Dist: ansicolors~=1.1
29
+ Requires-Dist: bidict~=0.23
30
+ Requires-Dist: channels~=4.2
31
+ Requires-Dist: comicbox[pdf]~=2.0.2
32
+ Requires-Dist: dateparser~=1.2
33
+ Requires-Dist: django-cachalot~=2.7.dev0
34
+ Requires-Dist: django-cors-headers~=4.0
35
+ Requires-Dist: django-rest-registration~=0.9.0
36
+ Requires-Dist: django-vite~=3.1.0
37
+ Requires-Dist: djangorestframework-camel-case~=1.4.2
38
+ Requires-Dist: djangorestframework~=3.16.0
39
+ Requires-Dist: django~=5.2.4
40
+ Requires-Dist: drf-spectacular~=0.28
41
+ Requires-Dist: fnvhash~=0.1
42
+ Requires-Dist: humanfriendly~=10.0
43
+ Requires-Dist: humanize~=4.12
44
+ Requires-Dist: hypercorn[h3]~=0.17
45
+ Requires-Dist: loguru~=0.7.3
46
+ Requires-Dist: nh3~=0.2
47
+ Requires-Dist: pillow~=11.3
48
+ Requires-Dist: psutil~=7.0.0
49
+ Requires-Dist: pyparsing~=3.2
50
+ Requires-Dist: requests~=2.24
51
+ Requires-Dist: typing-extensions~=4.14
52
+ Requires-Dist: tzlocal~=5.0
53
+ Requires-Dist: versio~=0.5
54
+ Requires-Dist: watchdog~=6.0.0
55
+ Requires-Dist: websocket-client~=1.2
56
+ Requires-Dist: whitenoise[brotli]~=6.0
57
+ Requires-Dist: zipstream-ng~=1.8.0
58
+ Description-Content-Type: text/markdown
59
+
60
+ # Codex
61
+
62
+ A comic archive browser and reader.
63
+
64
+ <img src="codex/img/logo.svg" style="
65
+ height: 128px;
66
+ width: 128px;
67
+ border-radius: 128px;
68
+ " />
69
+
70
+ ## ✨ Features
71
+
72
+ - Codex is a web server.
73
+ - Full text search of metadata and bookmarks.
74
+ - GPLv3 Licenced.
75
+ - Filter and sort on all comic metadata and unread status per user.
76
+ - Browse a tree of Publishers, Imprints, Series, Volumes, or your own folder
77
+ hierarchy, or by tagged Story Arc.
78
+ - Read comics in a variety of aspect ratios and directions that fit your screen.
79
+ - Watches the filesystem and automatically imports new or changed comics.
80
+ - Anonymous browsing and reading or reigistered users only, to your preference.
81
+ - Per user bookmarking & settings, even before you make an account.
82
+ - Private Libraries accessible only to certain groups of users.
83
+ - Reads CBZ, CBR, CBT, and PDF formatted comics.
84
+ - Syndication with OPDS 1 & 2, streaming, search and authentication.
85
+ - Add custom covers to Folders, Publishers, Imprints, Series, and Story Arcs.
86
+ - Runs in 1GB of RAM, faster with more.
87
+
88
+ ### Examples
89
+
90
+ - _Filter by_ Story Arc and Unread, _Order by_ Publish Date to create an event
91
+ reading list.
92
+ - _Filter by_ Unread and _Order by_ Added Time to see your latest unread comics.
93
+ - _Search by_ your favorite character to find their appearances across different
94
+ comics.
95
+
96
+ ## 👀 Demonstration
97
+
98
+ You may browse a [live demo server](https://demo.codex-reader.app/) to get a
99
+ feel for Codex.
100
+
101
+ ## 📜 News
102
+
103
+ Codex has a [NEWS file](NEWS.md) to summarize changes that affect users.
104
+
105
+ ## 🕸️ HTML Docs
106
+
107
+ [HTML formatted docs are available here](https://codex-comic-reader.readthedocs.io)
108
+
109
+ ## 📦 Installation
110
+
111
+ ### Install & Run with Docker
112
+
113
+ Run the official [Docker Image](https://hub.docker.com/r/ajslater/codex).
114
+ Instructions for running the docker image are on the Docker Hub README. This is
115
+ the recommended way to run Codex.
116
+
117
+ You'll then want to read the [Administration](#administration) section of this
118
+ document.
119
+
120
+ ### Install & Run on HomeAssistant server
121
+
122
+ If you have a [HomeAssistant](https://www.home-assistant.io/) server, Codex can
123
+ be installed with the following steps :
124
+
125
+ - Add the `https://github.com/alexbelgium/hassio-addons` repository by
126
+ [clicking here](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Falexbelgium%2Fhassio-addons)
127
+ - Install the addon :
128
+ [click here to automatically open the addon store, then install the addon](https://my.home-assistant.io/redirect/supervisor)
129
+ - Customize addon options, then then start the add-on.
130
+
131
+ ### Install & Run as a Native Application
132
+
133
+ You can also run Codex as a natively installed python application with pip.
134
+
135
+ #### Binary Dependencies
136
+
137
+ You'll need to install the appropriate system dependencies for your platform
138
+ before installing Codex.
139
+
140
+ ##### Linux Dependencies
141
+
142
+ ###### Debian Dependencies
143
+
144
+ ...and Ubuntu, Mint, MX, Window Subsystem for Linux, and others.
145
+
146
+ ```sh
147
+ apt install build-essential libimagequant0 libjpeg-turbo8 libopenjp2-7 libssl libyaml-0-2 libtiff6 libwebp7 python3-dev python3-pip sqlite3 unrar zlib1g
148
+ ```
149
+
150
+ Versions of packages like libjpeg, libssl, libtiff may differ between flavors
151
+ and versions of your distribution. If the package versions listed in the example
152
+ above are not available, try searching for ones that are with `apt-cache` or
153
+ `aptitude`.
154
+
155
+ ```sh
156
+ apt-cache search libjpeg-turbo
157
+ ```
158
+
159
+ ###### Alpine Dependencies
160
+
161
+ ```sh
162
+ apk add bsd-compat-headers build-base jpeg-dev libffi-dev libwebp openssl-dev sqlite yaml-dev zlib-dev
163
+ ```
164
+
165
+ ##### Install unrar Runtime Dependency on non-debian Linux
166
+
167
+ Codex requires unrar to read CBR formatted comic archives. Unrar is often not
168
+ packaged for Linux, but here are some instructions:
169
+ [How to install unrar in Linux](https://www.unixtutorial.org/how-to-install-unrar-in-linux/)
170
+
171
+ Unrar as packaged for Alpine Linux v3.14 seems to work on Alpine v3.15+
172
+
173
+ ##### macOS Dependencies
174
+
175
+ Using [Homebrew](https://brew.sh/):
176
+
177
+ ```sh
178
+ brew install jpeg libffi libyaml libzip openssl python sqlite unrar webp
179
+ ```
180
+
181
+ #### Installing Codex on Linux on ARM (AARCH64) with Python 3.13
182
+
183
+ Pymupdf has no pre-built wheels for AARCH64 so pip must build it and the build
184
+ fails on Python 3.13 without this environment variable set:
185
+
186
+ ```sh
187
+ PYMUPDF_SETUP_PY_LIMITED_API=0 pip install codex
188
+ ```
189
+
190
+ You will also have to have the `build-essential` and `python3-dev` or equivalent
191
+ packages installed on on your Linux.
192
+
193
+ #### Windows Installation
194
+
195
+ Windows users are encouraged to use Docker to run Codex, but it will also run
196
+ natively on the Windows Subsystem for Linux.
197
+
198
+ Installation instructions are in the
199
+ [Native Windows Dependencies Installation Document](WINDOWS.md).
200
+
201
+ #### Run Codex Natively
202
+
203
+ Once you have installed codex, the codex binary should be on your path. To start
204
+ codex, run:
205
+
206
+ ```sh
207
+ codex
208
+ ```
209
+
210
+ ### Use Codex
211
+
212
+ Once installed and running you may navigate to <http://localhost:9810/>
213
+
214
+ ## 👑 Administration
215
+
216
+ ### Navigate to the Admin Panel
217
+
218
+ - Click the hamburger menu ☰ to open the browser settings drawer.
219
+ - Log in as the 'admin' user. The default administrator password is also
220
+ 'admin'.
221
+ - Navigate to the Admin Panel by clicking on its link in the browser settings
222
+ drawer after you have logged in.
223
+
224
+ ### Change the Admin password
225
+
226
+ The first thing you should do is log in as the admin user and change the admin
227
+ password.
228
+
229
+ - Navigate to the Admin Panel as described above.
230
+ - Select the Users tab.
231
+ - Change the admin user's password using the small lock button.
232
+ - You may also change the admin user's name with the edit button.
233
+ - You may create other users and grant them admin privileges by making them
234
+ staff.
235
+
236
+ ### Add Comic Libraries
237
+
238
+ The second thing you will want to do is log in as an Administrator and add one
239
+ or more comic libraries.
240
+
241
+ - Navigate to the Admin Panel as described above.
242
+ - Select the Libraries tab in the Admin Panel
243
+ - Add a Library with the "+ LIBRARY" button in the upper left.
244
+
245
+ ### Reset the admin password
246
+
247
+ If you forget all your superuser passwords, you may restore the original default
248
+ admin account by running codex with the `CODEX_RESET_ADMIN` environment variable
249
+ set.
250
+
251
+ ```sh
252
+ CODEX_RESET_ADMIN=1 codex
253
+ ```
254
+
255
+ or, if using Docker:
256
+
257
+ ```sh
258
+ docker run -e CODEX_RESET_ADMIN=1 -v host-parent-dir/config:/config ajslater/codex
259
+ ```
260
+
261
+ ### Private Libraries
262
+
263
+ In the Admin Panel you may configure private libraries that are only accessible
264
+ to specific groups.
265
+
266
+ A library with _no_ groups is accessible to every user including anonymous
267
+ users.
268
+
269
+ A library with _any_ groups is accessible only to users who are in those groups.
270
+
271
+ Use the Groups admin panel to create groups and the Users admin panel to add and
272
+ remove users to groups.
273
+
274
+ #### Include and Exclude Groups
275
+
276
+ Codex can make groups for libraries that exclude groups of users or exclude
277
+ everyone and include only certain groups of users.
278
+
279
+ ### PDF Metadata
280
+
281
+ Codex reads PDF metadata from the filename, PDF metadata fields and also many
282
+ formats of common complex comic metadata if they are embedded in the PDF
283
+ `keywords` field.
284
+
285
+ If you decide to include PDFs in your comic library, I recommend taking time to
286
+ rename your files so Codex can find some metadata. Codex recognizes several file
287
+ naming schemes. This one has good results:
288
+
289
+ `{series} v{volume} #{issue} {title} ({year}) {ignored}.pdf`
290
+
291
+ Complex comic metadata, such as ComicInfo.xml, can be also be embedded in the
292
+ keywords field by using the [comicbox](https://github.com/ajslater/comicbox)
293
+ command line tool. Codex will read this data because it relies on comicbox
294
+ internally. Not many people use comicbox or embedded metadata in PDFs in this
295
+ fashion, so you likely won't find it unless you've added it yourself.
296
+
297
+ ### 🗝️ API with Key Access
298
+
299
+ Codex has a limited number of API endpoints available with API Key Access. The
300
+ API Key is available on the admin/stats tab.
301
+
302
+ ## 🎛️ Configuration
303
+
304
+ ### Config Dir
305
+
306
+ The default config directory is `config/` directly under the working directory
307
+ you run codex from. You may specify an alternate config directory with the
308
+ environment variable `CODEX_CONFIG_DIR`.
309
+
310
+ The config directory contains a file named `hypercorn.toml` where you can
311
+ specify ports and bind addresses. If no `hypercorn.toml` is present Codex copies
312
+ a default one to that directory on startup.
313
+
314
+ The default values for the config options are:
315
+
316
+ ```toml
317
+ bind = ["0.0.0.0:9810"]
318
+ quick_bind = ["0.0.0.0:9810"]
319
+ root_path = "/codex"
320
+ ```
321
+
322
+ The config directory also holds the main sqlite database, the Whoosh search
323
+ index, a Django cache and comic book cover thumbnails.
324
+
325
+ ### Environment Variables
326
+
327
+ #### General
328
+
329
+ - `TIMEZONE` or `TZ` will explicitly set the timezone in long format (e.g.
330
+ `"America/Los Angeles"`). This is useful inside Docker because codex cannot
331
+ automatically detect the host machine's timezone.
332
+ - `CODEX_CONFIG_DIR` will set the path to codex config directory. Defaults to
333
+ `$CWD/config`
334
+ - `CODEX_RESET_ADMIN=1` will reset the admin user and its password to defaults
335
+ when codex starts.
336
+ - `CODEX_FIX_FOREIGN_KEYS=1` will check for and try to repair illegal foreign
337
+ keys on startup.
338
+ - `CODEX_INTEGRITY_CHECK=1` will perform database integrity check on startup.
339
+ - `CODEX_FTS_INTEGRITY_CHECK=1` will perform an integrity check on the full text
340
+ search index.
341
+ - `CODEX_FTS_REBUILD=1` will rebuild the full text search index.
342
+ - `DEBUG_TRANSFORM` will show verbose information about how the comicbox library
343
+ reads all archive metadata sources and transforms it into a the comicbox
344
+ schema.
345
+
346
+ #### Logging
347
+
348
+ - `LOGLEVEL` will change how verbose codex's logging is. Valid values are
349
+ `ERROR`, `WARNING`, `INFO`, `DEBUG`. The default is `INFO`.
350
+ - `CODEX_LOG_DIR` sets a custom directory for saving logfiles. Defaults to
351
+ `$CODEX_CONFIG_DIR/logs`
352
+ - `CODEX_LOG_TO_FILE=0` will not log to files.
353
+ - `CODEX_LOG_TO_CONSOLE=0` will not log to the console.
354
+
355
+ #### Throttling
356
+
357
+ Codex contains some experimental throttling controls. The value supplied to
358
+ these variables will be interpreted as the maximum number of allowed requests
359
+ per minute. For example, the following settings would limit each described group
360
+ to 2 queries per second.
361
+
362
+ - `CODEX_THROTTLE_ANON=30` Anonymous users
363
+ - `CODEX_THROTTLE_USER=30` Authenticated users
364
+ - `CODEX_THROTTLE_OPDS=30` The OPDS v1 & v2 APIs (Panels uses this for search)
365
+ - `CODEX_THROTTLE_OPENSEARCH=30` The OPDS v1 Opensearch API
366
+
367
+ ### Reverse Proxy
368
+
369
+ [nginx](https://nginx.org/) is often used as a TLS terminator and subpath proxy.
370
+
371
+ Here's an example nginx config with a subpath named '/codex'.
372
+
373
+ ```nginx
374
+ # HTTP
375
+ proxy_set_header Host $http_host;
376
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
377
+ proxy_set_header X-Forwarded-Host $server_name;
378
+ proxy_set_header X-Forwarded-Port $server_port;
379
+ proxy_set_header X-Forwarded-Proto $scheme;
380
+ proxy_set_header X-Real-IP $remote_addr;
381
+ proxy_set_header X-Scheme $scheme;
382
+ # Websockets
383
+ proxy_http_version 1.1;
384
+ proxy_set_header Upgrade $http_upgrade;
385
+
386
+ proxy_set_header Connection "Upgrade" location /codex {
387
+ proxy_pass http://codex:9810;
388
+ # Codex reads http basic authentication.
389
+ # If the nginx credentials are different than codex credentials use this line to
390
+ # not forward the authorization.
391
+ proxy_set_header Authorization "";
392
+ }
393
+ ```
394
+
395
+ Specify a reverse proxy sub path (if you have one) in `config/hypercorn.toml`
396
+
397
+ ```toml
398
+ root_path = "/codex"
399
+ ```
400
+
401
+ #### Nginx Reverse Proxy 502 when container refreshes
402
+
403
+ Nginx requires a special trick to refresh dns when linked Docker containers
404
+ recreate. See this
405
+ [nginx with dynamix upstreams](https://tenzer.dk/nginx-with-dynamic-upstreams/)
406
+ article.
407
+
408
+ ### Restricted Memory Environments
409
+
410
+ Codex can run with as little as 1GB available RAM. Large batch jobs –like
411
+ importing and indexing tens of thousands of comics at once– will run faster the
412
+ more memory is available to Codex. The biggest gains in speed happen when you
413
+ increase memory up to about 6GB. Codex batch jobs do get faster the more memory
414
+ it has above 6GB, but with diminishing returns.
415
+
416
+ If you must run Codex in an admin restricted memory environment you might want
417
+ to temporarily give Codex a lot of memory to run a very large import job and
418
+ then restrict it for normal operation.
419
+
420
+ ## 📖 Use
421
+
422
+ ### 👤 Sessions & Accounts
423
+
424
+ Once your administrator has added some comic libraries, you may browse and read
425
+ comics. Codex will remember your preferences, bookmarks and progress in the
426
+ browser session. Codex destroys anonymous sessions and bookmarks after 60 days.
427
+ To preserve these settings across browsers and after sessions expire, you may
428
+ register an account with a username and password. You will have to contact your
429
+ administrator to reset your password if you forget it.
430
+
431
+ ### ᯤ OPDS
432
+
433
+ Codex supports OPDS syndication and OPDS streaming. You may find the OPDS url in
434
+ the side drawer. It should take the form:
435
+
436
+ `http(s)://host.tld(:9810)(/root_path)/opds/v1.2/`
437
+
438
+ or
439
+
440
+ `http(s)://host.tld(:9810)(/root_path)/opds/v2.0/`
441
+
442
+ OPDS 2.0 support is experimental and not widely or well supported by clients.
443
+ OPDS 2.0 book readers exist, but I am not yet aware of an OPDS 2.0 comic reader.
444
+
445
+ #### Clients
446
+
447
+ - iOS has [Panels](https://panels.app/), [PocketBooks](https://pocketbook.ch/),
448
+ [KYBook 3](http://kybook-reader.com/), and
449
+ [Chunky Comic Reader](https://apps.apple.com/us/app/chunky-comic-reader/id663567628)
450
+ - Android has
451
+ [Moon+](https://play.google.com/store/apps/details?id=com.flyersoft.moonreader)
452
+ and
453
+ [Librera](https://play.google.com/store/apps/details?id=com.foobnix.pdf.reader)
454
+
455
+ Kybook 3 does not seem to support http basic authentication, so Cbbodex users
456
+ are not supported.
457
+
458
+ #### HTTP Basic Authentication
459
+
460
+ If you wish to access OPDS as your Codex User. You will have to add your
461
+ username and password to the URL. Some OPDS clients do not asssist you with
462
+ authentication. In that case the OPDS url will look like:
463
+
464
+ `http(s)://username:password@host.tld(:9810)(/root_path)/opds/v1.2/`
465
+
466
+ #### Supported OPDS Specifications
467
+
468
+ ##### OPDS v1
469
+
470
+ - [OPDS 1.2](https://specs.opds.io/opds-1.2.html)
471
+ - [OPDS-PSE 1.2](https://github.com/anansi-project/opds-pse/blob/master/v1.2.md)
472
+ - [OPDS Authentication 1.0](https://drafts.opds.io/authentication-for-opds-1.0.html)
473
+ - [OpenSearch 1.1](https://github.com/dewitt/opensearch)
474
+
475
+ ##### OPDS v2
476
+
477
+ - [OPDS 2.0 (draft)](https://drafts.opds.io/opds-2.0.html)
478
+ - [OPDS 2.0 Progression (proposal)](https://github.com/opds-community/drafts/discussions/67)
479
+
480
+ ## [🩺 Troubleshooting](#troubleshooting)
481
+
482
+ ### 📒 Logs
483
+
484
+ Codex collects its logs in the `config/logs` directory. Take a look to see what
485
+ th e server is doing.
486
+
487
+ You can change how much codex logs by setting the `LOGLEVEL` environment
488
+ variable. By default this level is `INFO`. To see more verbose messages, run
489
+ codex like:
490
+
491
+ ```sh
492
+ LOGLEVEL=DEBUG codex
493
+ ```
494
+
495
+ ### Watching Filesystem Events with Docker
496
+
497
+ Codex tries to watch for filesystem events to instantly update your comic
498
+ libraries when they change on disk. But these native filesystem events are not
499
+ translated between macOS & Windows Docker hosts and the Docker Linux container.
500
+ If you find that your installation is not updating to filesystem changes
501
+ instantly, you might try enabling polling for the affected libraries and
502
+ decreasing the `poll_every` value in the Admin console to a frequency that suits
503
+ you.
504
+
505
+ ### Emergency Database Repair
506
+
507
+ If the database becomes corrupt, Codex includes a facility to rebuild the
508
+ database. Place a file named `rebuild_db` in your Codex config directory like
509
+ so:
510
+
511
+ ```sh
512
+ touch config/rebuild_db
513
+ ```
514
+
515
+ Shut down and restart Codex.
516
+
517
+ The next time Codex starts it will back up the existing database and try to
518
+ rebuild it. The database lives in the config directory as the file
519
+ `config/db.sqlite3`. If this procedure goes kablooey, you may recover the
520
+ original database at `config/backups/codex.sqlite3.before-rebuild`. Codex will
521
+ remove the `rebuild_db` file.
522
+
523
+ ### Warnings to Ignore
524
+
525
+ #### StreamingHttpResponse Iterator Warning
526
+
527
+ ```pycon
528
+ packages/django/http/response.py:517: Warning: StreamingHttpResponse must consume synchronous iterators in order to serve them asynchronously. Use an asynchronous iterator instead.
529
+ ```
530
+
531
+ This is a known warning and does not represent anything bad happening. It's an
532
+ artifact of the Django framework slowly supporting asynchronous server endpoints
533
+ and unfortunately isn't practical to remove yet.
534
+
535
+ ## 📚Alternatives to Codex
536
+
537
+ - [Kavita](https://www.kavitareader.com/) has light metadata filtering/editing,
538
+ supports comics, eBooks, and features for manga.
539
+ - [Komga](https://komga.org/) has light metadata editing.
540
+ - [Ubooquity](https://vaemendis.net/ubooquity/) reads both comics and eBooks.
541
+ - [Mylar](https://github.com/mylar3/mylar3) is the best comic book manager which
542
+ also has a built in reader.
543
+ - [Comictagger](https://github.com/comictagger/comictagger) is a comic metadata
544
+ editor. It comes with a powerful command line and desktop GUI.
545
+
546
+ ## 🤝 Contributing
547
+
548
+ ### 🐛 Bug Reports
549
+
550
+ Issues and feature requests are best filed on the
551
+ [Github issue tracker](https://github.com/ajslater/codex/issues).
552
+
553
+ ### 🛠 Develop
554
+
555
+ Codex's git repo is mirrored on [Github](https://github.com/ajslater/codex/)
556
+
557
+ Codex is a Django Python webserver with a VueJS front end.
558
+
559
+ `/codex/codex/` is the main django app which provides the webserver and
560
+ database.
561
+
562
+ `/codex/frontend/` is where the vuejs frontend lives.
563
+
564
+ Most of Codex development is now controlled through the Makefile. Type `make`
565
+ for a list of commands.
566
+
567
+ ## 💬 Support
568
+
569
+ By the generosity of the good people of
570
+ [Mylar](https://github.com/mylar3/mylar3), I and other Codex users answer
571
+ questions on the [Mylar Discord](https://discord.gg/6UG94R7E8T). Please use the
572
+ `#codex-support` channel to ask for help with Codex.
573
+
574
+ ## 🔗 Links
575
+
576
+ - [Docker Image](https://hub.docker.com/r/ajslater/codex)
577
+ - [PyPi Package](https://pypi.org/project/codex/)
578
+ - [GitHub Project](https://github.com/ajslater/codex/)
579
+
580
+ ## 🙏🏻 Thanks
581
+
582
+ - Thanks to [Aurélien Mazurie](https://pypi.org/user/ajmazurie/) for allowing me
583
+ to use the PyPi name 'codex'.
584
+ - To [ProfessionalTart](https://github.com/professionaltart) for providing
585
+ native Windows installation instructions.
586
+ - Thanks to the good people of
587
+ [#mylar](https://github.com/mylar3/mylar3#live-support--conversation) for
588
+ continuous feedback and comic ecosystem education.
589
+
590
+ ## 😊 Enjoy
591
+
592
+ ![These simple people have managed to tap into the spiritual forces that mystics and yogis spend literal lifetimes seeking. I feel... ...I feel...](strange.jpg)
@@ -0,0 +1,61 @@
1
+ """Fetch the current codex version."""
2
+
3
+ import json
4
+ from datetime import timedelta
5
+
6
+ import requests
7
+ from django.utils import timezone
8
+
9
+ from codex.librarian.scribe.janitor.status import JanitorCodexLatestVersionStatus
10
+ from codex.librarian.scribe.janitor.tasks import JanitorCodexUpdateTask
11
+ from codex.librarian.worker import WorkerStatusBase
12
+ from codex.models import Timestamp
13
+ from codex.version import PACKAGE_NAME
14
+
15
+ _PYPI_URL_TEMPLATE = "https://pypi.python.org/pypi/%s/json"
16
+ _REPO_URL = _PYPI_URL_TEMPLATE % PACKAGE_NAME
17
+ _CACHE_EXPIRY = timedelta(days=1) - timedelta(minutes=5)
18
+ _REPO_TIMEOUT = 5
19
+
20
+
21
+ class CodexLatestVersionUpdater(WorkerStatusBase):
22
+ """Methods for fetching the latest version."""
23
+
24
+ @staticmethod
25
+ def _fetch_latest_version():
26
+ """Fetch Latest Remotely."""
27
+ response = requests.get(_REPO_URL, timeout=_REPO_TIMEOUT)
28
+ return json.loads(response.text)["info"]["version"]
29
+
30
+ def update_latest_version(self, *, force: bool, update: bool = False):
31
+ """Get the latest version from a remote repo using a cache."""
32
+ if self.db_write_lock.locked():
33
+ self.log.warning("Database locked, not retrieving latest codex version.")
34
+ return
35
+ status = JanitorCodexLatestVersionStatus()
36
+ try:
37
+ self.status_controller.start(status)
38
+ ts = Timestamp.objects.get(key=Timestamp.Choices.CODEX_VERSION.value)
39
+ do_fetch = (
40
+ force
41
+ or not ts.version
42
+ or (timezone.now() - ts.updated_at > _CACHE_EXPIRY)
43
+ )
44
+ if do_fetch:
45
+ latest_version = self._fetch_latest_version()
46
+ if not latest_version:
47
+ reason = "Bad latest version fetched."
48
+ raise ValueError(reason)
49
+ ts.version = latest_version
50
+ ts.save()
51
+ level = "INFO"
52
+ log_txt = f"Saved new latest codex version {latest_version}."
53
+ if update:
54
+ task = JanitorCodexUpdateTask()
55
+ self.librarian_queue.put(task)
56
+ else:
57
+ level = "DEBUG"
58
+ log_txt = "Not fetching new latest version, not expired."
59
+ self.log.log(level, log_txt)
60
+ finally:
61
+ self.status_controller.finish(status)