Coverage for fastapi / applications.py: 100%

171 statements  

« prev     ^ index     » next       coverage.py v7.13.3, created at 2026-04-06 01:24 +0000

1from collections.abc import Awaitable, Callable, Coroutine, Sequence 1abcd

2from enum import Enum 1abcd

3from typing import ( 1abcd

4 Annotated, 

5 Any, 

6 TypeVar, 

7) 

8 

9from annotated_doc import Doc 1abcd

10from fastapi import routing 1abcd

11from fastapi.datastructures import Default, DefaultPlaceholder 1abcd

12from fastapi.exception_handlers import ( 1abcd

13 http_exception_handler, 

14 request_validation_exception_handler, 

15 websocket_request_validation_exception_handler, 

16) 

17from fastapi.exceptions import RequestValidationError, WebSocketRequestValidationError 1abcd

18from fastapi.logger import logger 1abcd

19from fastapi.middleware.asyncexitstack import AsyncExitStackMiddleware 1abcd

20from fastapi.openapi.docs import ( 1abcd

21 get_redoc_html, 

22 get_swagger_ui_html, 

23 get_swagger_ui_oauth2_redirect_html, 

24) 

25from fastapi.openapi.utils import get_openapi 1abcd

26from fastapi.params import Depends 1abcd

27from fastapi.types import DecoratedCallable, IncEx 1abcd

28from fastapi.utils import generate_unique_id 1abcd

29from starlette.applications import Starlette 1abcd

30from starlette.datastructures import State 1abcd

31from starlette.exceptions import HTTPException 1abcd

32from starlette.middleware import Middleware 1abcd

33from starlette.middleware.base import BaseHTTPMiddleware 1abcd

34from starlette.middleware.errors import ServerErrorMiddleware 1abcd

35from starlette.middleware.exceptions import ExceptionMiddleware 1abcd

36from starlette.requests import Request 1abcd

37from starlette.responses import HTMLResponse, JSONResponse, Response 1abcd

38from starlette.routing import BaseRoute 1abcd

39from starlette.types import ASGIApp, ExceptionHandler, Lifespan, Receive, Scope, Send 1abcd

40from typing_extensions import deprecated 1abcd

41 

42AppType = TypeVar("AppType", bound="FastAPI") 1abcd

43 

44 

45class FastAPI(Starlette): 1abcd

46 """ 

47 `FastAPI` app class, the main entrypoint to use FastAPI. 

48 

49 Read more in the 

50 [FastAPI docs for First Steps](https://fastapi.tiangolo.com/tutorial/first-steps/). 

51 

52 ## Example 

53 

54 ```python 

55 from fastapi import FastAPI 

56 

57 app = FastAPI() 

58 ``` 

59 """ 

60 

61 def __init__( 1abcd

62 self: AppType, 

63 *, 

64 debug: Annotated[ 

65 bool, 

66 Doc( 

67 """ 

68 Boolean indicating if debug tracebacks should be returned on server 

69 errors. 

70 

71 Read more in the 

72 [Starlette docs for Applications](https://www.starlette.dev/applications/#instantiating-the-application). 

73 """ 

74 ), 

75 ] = False, 

76 routes: Annotated[ 

77 list[BaseRoute] | None, 

78 Doc( 

79 """ 

80 **Note**: you probably shouldn't use this parameter, it is inherited 

81 from Starlette and supported for compatibility. 

82 

83 --- 

84 

85 A list of routes to serve incoming HTTP and WebSocket requests. 

86 """ 

87 ), 

88 deprecated( 

89 """ 

90 You normally wouldn't use this parameter with FastAPI, it is inherited 

91 from Starlette and supported for compatibility. 

92 

93 In FastAPI, you normally would use the *path operation methods*, 

94 like `app.get()`, `app.post()`, etc. 

95 """ 

96 ), 

97 ] = None, 

98 title: Annotated[ 

99 str, 

100 Doc( 

101 """ 

102 The title of the API. 

103 

104 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

105 

106 Read more in the 

107 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api). 

108 

109 **Example** 

110 

111 ```python 

112 from fastapi import FastAPI 

113 

114 app = FastAPI(title="ChimichangApp") 

115 ``` 

116 """ 

117 ), 

118 ] = "FastAPI", 

119 summary: Annotated[ 

120 str | None, 

121 Doc( 

122 """ 

123 A short summary of the API. 

124 

125 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

126 

127 Read more in the 

128 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api). 

129 

130 **Example** 

131 

132 ```python 

133 from fastapi import FastAPI 

134 

135 app = FastAPI(summary="Deadpond's favorite app. Nuff said.") 

136 ``` 

137 """ 

138 ), 

139 ] = None, 

140 description: Annotated[ 

141 str, 

142 Doc( 

143 ''' 

144 A description of the API. Supports Markdown (using 

145 [CommonMark syntax](https://commonmark.org/)). 

146 

147 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

148 

149 Read more in the 

150 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api). 

151 

152 **Example** 

153 

154 ```python 

155 from fastapi import FastAPI 

156 

157 app = FastAPI( 

158 description=""" 

159 ChimichangApp API helps you do awesome stuff. 🚀 

160 

161 ## Items 

162 

163 You can **read items**. 

164 

165 ## Users 

166 

167 You will be able to: 

168 

169 * **Create users** (_not implemented_). 

170 * **Read users** (_not implemented_). 

171 

172 """ 

173 ) 

174 ``` 

175 ''' 

176 ), 

177 ] = "", 

178 version: Annotated[ 

179 str, 

180 Doc( 

181 """ 

182 The version of the API. 

183 

184 **Note** This is the version of your application, not the version of 

185 the OpenAPI specification nor the version of FastAPI being used. 

186 

187 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

188 

189 Read more in the 

190 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api). 

191 

192 **Example** 

193 

194 ```python 

195 from fastapi import FastAPI 

196 

197 app = FastAPI(version="0.0.1") 

198 ``` 

199 """ 

200 ), 

201 ] = "0.1.0", 

202 openapi_url: Annotated[ 

203 str | None, 

204 Doc( 

205 """ 

206 The URL where the OpenAPI schema will be served from. 

207 

208 If you set it to `None`, no OpenAPI schema will be served publicly, and 

209 the default automatic endpoints `/docs` and `/redoc` will also be 

210 disabled. 

211 

212 Read more in the 

213 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#openapi-url). 

214 

215 **Example** 

216 

217 ```python 

218 from fastapi import FastAPI 

219 

220 app = FastAPI(openapi_url="/api/v1/openapi.json") 

221 ``` 

222 """ 

223 ), 

224 ] = "/openapi.json", 

225 openapi_tags: Annotated[ 

226 list[dict[str, Any]] | None, 

227 Doc( 

228 """ 

229 A list of tags used by OpenAPI, these are the same `tags` you can set 

230 in the *path operations*, like: 

231 

232 * `@app.get("/users/", tags=["users"])` 

233 * `@app.get("/items/", tags=["items"])` 

234 

235 The order of the tags can be used to specify the order shown in 

236 tools like Swagger UI, used in the automatic path `/docs`. 

237 

238 It's not required to specify all the tags used. 

239 

240 The tags that are not declared MAY be organized randomly or based 

241 on the tools' logic. Each tag name in the list MUST be unique. 

242 

243 The value of each item is a `dict` containing: 

244 

245 * `name`: The name of the tag. 

246 * `description`: A short description of the tag. 

247 [CommonMark syntax](https://commonmark.org/) MAY be used for rich 

248 text representation. 

249 * `externalDocs`: Additional external documentation for this tag. If 

250 provided, it would contain a `dict` with: 

251 * `description`: A short description of the target documentation. 

252 [CommonMark syntax](https://commonmark.org/) MAY be used for 

253 rich text representation. 

254 * `url`: The URL for the target documentation. Value MUST be in 

255 the form of a URL. 

256 

257 Read more in the 

258 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-tags). 

259 

260 **Example** 

261 

262 ```python 

263 from fastapi import FastAPI 

264 

265 tags_metadata = [ 

266 { 

267 "name": "users", 

268 "description": "Operations with users. The **login** logic is also here.", 

269 }, 

270 { 

271 "name": "items", 

272 "description": "Manage items. So _fancy_ they have their own docs.", 

273 "externalDocs": { 

274 "description": "Items external docs", 

275 "url": "https://fastapi.tiangolo.com/", 

276 }, 

277 }, 

278 ] 

279 

280 app = FastAPI(openapi_tags=tags_metadata) 

281 ``` 

282 """ 

283 ), 

284 ] = None, 

285 servers: Annotated[ 

286 list[dict[str, str | Any]] | None, 

287 Doc( 

288 """ 

289 A `list` of `dict`s with connectivity information to a target server. 

290 

291 You would use it, for example, if your application is served from 

292 different domains and you want to use the same Swagger UI in the 

293 browser to interact with each of them (instead of having multiple 

294 browser tabs open). Or if you want to leave fixed the possible URLs. 

295 

296 If the servers `list` is not provided, or is an empty `list`, the 

297 `servers` property in the generated OpenAPI will be: 

298 

299 * a `dict` with a `url` value of the application's mounting point 

300 (`root_path`) if it's different from `/`. 

301 * otherwise, the `servers` property will be omitted from the OpenAPI 

302 schema. 

303 

304 Each item in the `list` is a `dict` containing: 

305 

306 * `url`: A URL to the target host. This URL supports Server Variables 

307 and MAY be relative, to indicate that the host location is relative 

308 to the location where the OpenAPI document is being served. Variable 

309 substitutions will be made when a variable is named in `{`brackets`}`. 

310 * `description`: An optional string describing the host designated by 

311 the URL. [CommonMark syntax](https://commonmark.org/) MAY be used for 

312 rich text representation. 

313 * `variables`: A `dict` between a variable name and its value. The value 

314 is used for substitution in the server's URL template. 

315 

316 Read more in the 

317 [FastAPI docs for Behind a Proxy](https://fastapi.tiangolo.com/advanced/behind-a-proxy/#additional-servers). 

318 

319 **Example** 

320 

321 ```python 

322 from fastapi import FastAPI 

323 

324 app = FastAPI( 

325 servers=[ 

326 {"url": "https://stag.example.com", "description": "Staging environment"}, 

327 {"url": "https://prod.example.com", "description": "Production environment"}, 

328 ] 

329 ) 

330 ``` 

331 """ 

332 ), 

333 ] = None, 

334 dependencies: Annotated[ 

335 Sequence[Depends] | None, 

336 Doc( 

337 """ 

338 A list of global dependencies, they will be applied to each 

339 *path operation*, including in sub-routers. 

340 

341 Read more about it in the 

342 [FastAPI docs for Global Dependencies](https://fastapi.tiangolo.com/tutorial/dependencies/global-dependencies/). 

343 

344 **Example** 

345 

346 ```python 

347 from fastapi import Depends, FastAPI 

348 

349 from .dependencies import func_dep_1, func_dep_2 

350 

351 app = FastAPI(dependencies=[Depends(func_dep_1), Depends(func_dep_2)]) 

352 ``` 

353 """ 

354 ), 

355 ] = None, 

356 default_response_class: Annotated[ 

357 type[Response], 

358 Doc( 

359 """ 

360 The default response class to be used. 

361 

362 Read more in the 

363 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#default-response-class). 

364 

365 **Example** 

366 

367 ```python 

368 from fastapi import FastAPI 

369 from fastapi.responses import ORJSONResponse 

370 

371 app = FastAPI(default_response_class=ORJSONResponse) 

372 ``` 

373 """ 

374 ), 

375 ] = Default(JSONResponse), 

376 redirect_slashes: Annotated[ 

377 bool, 

378 Doc( 

379 """ 

380 Whether to detect and redirect slashes in URLs when the client doesn't 

381 use the same format. 

382 

383 **Example** 

384 

385 ```python 

386 from fastapi import FastAPI 

387 

388 app = FastAPI(redirect_slashes=True) # the default 

389 

390 @app.get("/items/") 

391 async def read_items(): 

392 return [{"item_id": "Foo"}] 

393 ``` 

394 

395 With this app, if a client goes to `/items` (without a trailing slash), 

396 they will be automatically redirected with an HTTP status code of 307 

397 to `/items/`. 

398 """ 

399 ), 

400 ] = True, 

401 docs_url: Annotated[ 

402 str | None, 

403 Doc( 

404 """ 

405 The path to the automatic interactive API documentation. 

406 It is handled in the browser by Swagger UI. 

407 

408 The default URL is `/docs`. You can disable it by setting it to `None`. 

409 

410 If `openapi_url` is set to `None`, this will be automatically disabled. 

411 

412 Read more in the 

413 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#docs-urls). 

414 

415 **Example** 

416 

417 ```python 

418 from fastapi import FastAPI 

419 

420 app = FastAPI(docs_url="/documentation", redoc_url=None) 

421 ``` 

422 """ 

423 ), 

424 ] = "/docs", 

425 redoc_url: Annotated[ 

426 str | None, 

427 Doc( 

428 """ 

429 The path to the alternative automatic interactive API documentation 

430 provided by ReDoc. 

431 

432 The default URL is `/redoc`. You can disable it by setting it to `None`. 

433 

434 If `openapi_url` is set to `None`, this will be automatically disabled. 

435 

436 Read more in the 

437 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#docs-urls). 

438 

439 **Example** 

440 

441 ```python 

442 from fastapi import FastAPI 

443 

444 app = FastAPI(docs_url="/documentation", redoc_url="redocumentation") 

445 ``` 

446 """ 

447 ), 

448 ] = "/redoc", 

449 swagger_ui_oauth2_redirect_url: Annotated[ 

450 str | None, 

451 Doc( 

452 """ 

453 The OAuth2 redirect endpoint for the Swagger UI. 

454 

455 By default it is `/docs/oauth2-redirect`. 

456 

457 This is only used if you use OAuth2 (with the "Authorize" button) 

458 with Swagger UI. 

459 """ 

460 ), 

461 ] = "/docs/oauth2-redirect", 

462 swagger_ui_init_oauth: Annotated[ 

463 dict[str, Any] | None, 

464 Doc( 

465 """ 

466 OAuth2 configuration for the Swagger UI, by default shown at `/docs`. 

467 

468 Read more about the available configuration options in the 

469 [Swagger UI docs](https://swagger.io/docs/open-source-tools/swagger-ui/usage/oauth2/). 

470 """ 

471 ), 

472 ] = None, 

473 middleware: Annotated[ 

474 Sequence[Middleware] | None, 

475 Doc( 

476 """ 

477 List of middleware to be added when creating the application. 

478 

479 In FastAPI you would normally do this with `app.add_middleware()` 

480 instead. 

481 

482 Read more in the 

483 [FastAPI docs for Middleware](https://fastapi.tiangolo.com/tutorial/middleware/). 

484 """ 

485 ), 

486 ] = None, 

487 exception_handlers: Annotated[ 

488 dict[ 

489 int | type[Exception], 

490 Callable[[Request, Any], Coroutine[Any, Any, Response]], 

491 ] 

492 | None, 

493 Doc( 

494 """ 

495 A dictionary with handlers for exceptions. 

496 

497 In FastAPI, you would normally use the decorator 

498 `@app.exception_handler()`. 

499 

500 Read more in the 

501 [FastAPI docs for Handling Errors](https://fastapi.tiangolo.com/tutorial/handling-errors/). 

502 """ 

503 ), 

504 ] = None, 

505 on_startup: Annotated[ 

506 Sequence[Callable[[], Any]] | None, 

507 Doc( 

508 """ 

509 A list of startup event handler functions. 

510 

511 You should instead use the `lifespan` handlers. 

512 

513 Read more in the [FastAPI docs for `lifespan`](https://fastapi.tiangolo.com/advanced/events/). 

514 """ 

515 ), 

516 ] = None, 

517 on_shutdown: Annotated[ 

518 Sequence[Callable[[], Any]] | None, 

519 Doc( 

520 """ 

521 A list of shutdown event handler functions. 

522 

523 You should instead use the `lifespan` handlers. 

524 

525 Read more in the 

526 [FastAPI docs for `lifespan`](https://fastapi.tiangolo.com/advanced/events/). 

527 """ 

528 ), 

529 ] = None, 

530 lifespan: Annotated[ 

531 Lifespan[AppType] | None, 

532 Doc( 

533 """ 

534 A `Lifespan` context manager handler. This replaces `startup` and 

535 `shutdown` functions with a single context manager. 

536 

537 Read more in the 

538 [FastAPI docs for `lifespan`](https://fastapi.tiangolo.com/advanced/events/). 

539 """ 

540 ), 

541 ] = None, 

542 terms_of_service: Annotated[ 

543 str | None, 

544 Doc( 

545 """ 

546 A URL to the Terms of Service for your API. 

547 

548 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

549 

550 Read more at the 

551 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api). 

552 

553 **Example** 

554 

555 ```python 

556 app = FastAPI(terms_of_service="http://example.com/terms/") 

557 ``` 

558 """ 

559 ), 

560 ] = None, 

561 contact: Annotated[ 

562 dict[str, str | Any] | None, 

563 Doc( 

564 """ 

565 A dictionary with the contact information for the exposed API. 

566 

567 It can contain several fields. 

568 

569 * `name`: (`str`) The name of the contact person/organization. 

570 * `url`: (`str`) A URL pointing to the contact information. MUST be in 

571 the format of a URL. 

572 * `email`: (`str`) The email address of the contact person/organization. 

573 MUST be in the format of an email address. 

574 

575 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

576 

577 Read more at the 

578 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api). 

579 

580 **Example** 

581 

582 ```python 

583 app = FastAPI( 

584 contact={ 

585 "name": "Deadpoolio the Amazing", 

586 "url": "http://x-force.example.com/contact/", 

587 "email": "[email protected]", 

588 } 

589 ) 

590 ``` 

591 """ 

592 ), 

593 ] = None, 

594 license_info: Annotated[ 

595 dict[str, str | Any] | None, 

596 Doc( 

597 """ 

598 A dictionary with the license information for the exposed API. 

599 

600 It can contain several fields. 

601 

602 * `name`: (`str`) **REQUIRED** (if a `license_info` is set). The 

603 license name used for the API. 

604 * `identifier`: (`str`) An [SPDX](https://spdx.dev/) license expression 

605 for the API. The `identifier` field is mutually exclusive of the `url` 

606 field. Available since OpenAPI 3.1.0, FastAPI 0.99.0. 

607 * `url`: (`str`) A URL to the license used for the API. This MUST be 

608 the format of a URL. 

609 

610 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

611 

612 Read more at the 

613 [FastAPI docs for Metadata and Docs URLs](https://fastapi.tiangolo.com/tutorial/metadata/#metadata-for-api). 

614 

615 **Example** 

616 

617 ```python 

618 app = FastAPI( 

619 license_info={ 

620 "name": "Apache 2.0", 

621 "url": "https://www.apache.org/licenses/LICENSE-2.0.html", 

622 } 

623 ) 

624 ``` 

625 """ 

626 ), 

627 ] = None, 

628 openapi_prefix: Annotated[ 

629 str, 

630 Doc( 

631 """ 

632 A URL prefix for the OpenAPI URL. 

633 """ 

634 ), 

635 deprecated( 

636 """ 

637 "openapi_prefix" has been deprecated in favor of "root_path", which 

638 follows more closely the ASGI standard, is simpler, and more 

639 automatic. 

640 """ 

641 ), 

642 ] = "", 

643 root_path: Annotated[ 

644 str, 

645 Doc( 

646 """ 

647 A path prefix handled by a proxy that is not seen by the application 

648 but is seen by external clients, which affects things like Swagger UI. 

649 

650 Read more about it at the 

651 [FastAPI docs for Behind a Proxy](https://fastapi.tiangolo.com/advanced/behind-a-proxy/). 

652 

653 **Example** 

654 

655 ```python 

656 from fastapi import FastAPI 

657 

658 app = FastAPI(root_path="/api/v1") 

659 ``` 

660 """ 

661 ), 

662 ] = "", 

663 root_path_in_servers: Annotated[ 

664 bool, 

665 Doc( 

666 """ 

667 To disable automatically generating the URLs in the `servers` field 

668 in the autogenerated OpenAPI using the `root_path`. 

669 

670 Read more about it in the 

671 [FastAPI docs for Behind a Proxy](https://fastapi.tiangolo.com/advanced/behind-a-proxy/#disable-automatic-server-from-root-path). 

672 

673 **Example** 

674 

675 ```python 

676 from fastapi import FastAPI 

677 

678 app = FastAPI(root_path_in_servers=False) 

679 ``` 

680 """ 

681 ), 

682 ] = True, 

683 responses: Annotated[ 

684 dict[int | str, dict[str, Any]] | None, 

685 Doc( 

686 """ 

687 Additional responses to be shown in OpenAPI. 

688 

689 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

690 

691 Read more about it in the 

692 [FastAPI docs for Additional Responses in OpenAPI](https://fastapi.tiangolo.com/advanced/additional-responses/). 

693 

694 And in the 

695 [FastAPI docs for Bigger Applications](https://fastapi.tiangolo.com/tutorial/bigger-applications/#include-an-apirouter-with-a-custom-prefix-tags-responses-and-dependencies). 

696 """ 

697 ), 

698 ] = None, 

699 callbacks: Annotated[ 

700 list[BaseRoute] | None, 

701 Doc( 

702 """ 

703 OpenAPI callbacks that should apply to all *path operations*. 

704 

705 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

706 

707 Read more about it in the 

708 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/). 

709 """ 

710 ), 

711 ] = None, 

712 webhooks: Annotated[ 

713 routing.APIRouter | None, 

714 Doc( 

715 """ 

716 Add OpenAPI webhooks. This is similar to `callbacks` but it doesn't 

717 depend on specific *path operations*. 

718 

719 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

720 

721 **Note**: This is available since OpenAPI 3.1.0, FastAPI 0.99.0. 

722 

723 Read more about it in the 

724 [FastAPI docs for OpenAPI Webhooks](https://fastapi.tiangolo.com/advanced/openapi-webhooks/). 

725 """ 

726 ), 

727 ] = None, 

728 deprecated: Annotated[ 

729 bool | None, 

730 Doc( 

731 """ 

732 Mark all *path operations* as deprecated. You probably don't need it, 

733 but it's available. 

734 

735 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

736 

737 Read more about it in the 

738 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#deprecate-a-path-operation). 

739 """ 

740 ), 

741 ] = None, 

742 include_in_schema: Annotated[ 

743 bool, 

744 Doc( 

745 """ 

746 To include (or not) all the *path operations* in the generated OpenAPI. 

747 You probably don't need it, but it's available. 

748 

749 This affects the generated OpenAPI (e.g. visible at `/docs`). 

750 

751 Read more about it in the 

752 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). 

753 """ 

754 ), 

755 ] = True, 

756 swagger_ui_parameters: Annotated[ 

757 dict[str, Any] | None, 

758 Doc( 

759 """ 

760 Parameters to configure Swagger UI, the autogenerated interactive API 

761 documentation (by default at `/docs`). 

762 

763 Read more about it in the 

764 [FastAPI docs about how to Configure Swagger UI](https://fastapi.tiangolo.com/how-to/configure-swagger-ui/). 

765 """ 

766 ), 

767 ] = None, 

768 generate_unique_id_function: Annotated[ 

769 Callable[[routing.APIRoute], str], 

770 Doc( 

771 """ 

772 Customize the function used to generate unique IDs for the *path 

773 operations* shown in the generated OpenAPI. 

774 

775 This is particularly useful when automatically generating clients or 

776 SDKs for your API. 

777 

778 Read more about it in the 

779 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

780 """ 

781 ), 

782 ] = Default(generate_unique_id), 

783 separate_input_output_schemas: Annotated[ 

784 bool, 

785 Doc( 

786 """ 

787 Whether to generate separate OpenAPI schemas for request body and 

788 response body when the results would be more precise. 

789 

790 This is particularly useful when automatically generating clients. 

791 

792 For example, if you have a model like: 

793 

794 ```python 

795 from pydantic import BaseModel 

796 

797 class Item(BaseModel): 

798 name: str 

799 tags: list[str] = [] 

800 ``` 

801 

802 When `Item` is used for input, a request body, `tags` is not required, 

803 the client doesn't have to provide it. 

804 

805 But when using `Item` for output, for a response body, `tags` is always 

806 available because it has a default value, even if it's just an empty 

807 list. So, the client should be able to always expect it. 

808 

809 In this case, there would be two different schemas, one for input and 

810 another one for output. 

811 

812 Read more about it in the 

813 [FastAPI docs about how to separate schemas for input and output](https://fastapi.tiangolo.com/how-to/separate-openapi-schemas) 

814 """ 

815 ), 

816 ] = True, 

817 openapi_external_docs: Annotated[ 

818 dict[str, Any] | None, 

819 Doc( 

820 """ 

821 This field allows you to provide additional external documentation links. 

822 If provided, it must be a dictionary containing: 

823 

824 * `description`: A brief description of the external documentation. 

825 * `url`: The URL pointing to the external documentation. The value **MUST** 

826 be a valid URL format. 

827 

828 **Example**: 

829 

830 ```python 

831 from fastapi import FastAPI 

832 

833 external_docs = { 

834 "description": "Detailed API Reference", 

835 "url": "https://example.com/api-docs", 

836 } 

837 

838 app = FastAPI(openapi_external_docs=external_docs) 

839 ``` 

840 """ 

841 ), 

842 ] = None, 

843 strict_content_type: Annotated[ 

844 bool, 

845 Doc( 

846 """ 

847 Enable strict checking for request Content-Type headers. 

848 

849 When `True` (the default), requests with a body that do not include 

850 a `Content-Type` header will **not** be parsed as JSON. 

851 

852 This prevents potential cross-site request forgery (CSRF) attacks 

853 that exploit the browser's ability to send requests without a 

854 Content-Type header, bypassing CORS preflight checks. In particular 

855 applicable for apps that need to be run locally (in localhost). 

856 

857 When `False`, requests without a `Content-Type` header will have 

858 their body parsed as JSON, which maintains compatibility with 

859 certain clients that don't send `Content-Type` headers. 

860 

861 Read more about it in the 

862 [FastAPI docs for Strict Content-Type](https://fastapi.tiangolo.com/advanced/strict-content-type/). 

863 """ 

864 ), 

865 ] = True, 

866 **extra: Annotated[ 

867 Any, 

868 Doc( 

869 """ 

870 Extra keyword arguments to be stored in the app, not used by FastAPI 

871 anywhere. 

872 """ 

873 ), 

874 ], 

875 ) -> None: 

876 self.debug = debug 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

877 self.title = title 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

878 self.summary = summary 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

879 self.description = description 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

880 self.version = version 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

881 self.terms_of_service = terms_of_service 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

882 self.contact = contact 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

883 self.license_info = license_info 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

884 self.openapi_url = openapi_url 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

885 self.openapi_tags = openapi_tags 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

886 self.root_path_in_servers = root_path_in_servers 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

887 self.docs_url = docs_url 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

888 self.redoc_url = redoc_url 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

889 self.swagger_ui_oauth2_redirect_url = swagger_ui_oauth2_redirect_url 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

890 self.swagger_ui_init_oauth = swagger_ui_init_oauth 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

891 self.swagger_ui_parameters = swagger_ui_parameters 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

892 self.servers = servers or [] 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

893 self.separate_input_output_schemas = separate_input_output_schemas 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

894 self.openapi_external_docs = openapi_external_docs 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

895 self.extra = extra 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

896 self.openapi_version: Annotated[ 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

897 str, 

898 Doc( 

899 """ 

900 The version string of OpenAPI. 

901 

902 FastAPI will generate OpenAPI version 3.1.0, and will output that as 

903 the OpenAPI version. But some tools, even though they might be 

904 compatible with OpenAPI 3.1.0, might not recognize it as a valid. 

905 

906 So you could override this value to trick those tools into using 

907 the generated OpenAPI. Have in mind that this is a hack. But if you 

908 avoid using features added in OpenAPI 3.1.0, it might work for your 

909 use case. 

910 

911 This is not passed as a parameter to the `FastAPI` class to avoid 

912 giving the false idea that FastAPI would generate a different OpenAPI 

913 schema. It is only available as an attribute. 

914 

915 **Example** 

916 

917 ```python 

918 from fastapi import FastAPI 

919 

920 app = FastAPI() 

921 

922 app.openapi_version = "3.0.2" 

923 ``` 

924 """ 

925 ), 

926 ] = "3.1.0" 

927 self.openapi_schema: dict[str, Any] | None = None 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

928 if self.openapi_url: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

929 assert self.title, "A title must be provided for OpenAPI, e.g.: 'My API'" 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

930 assert self.version, "A version must be provided for OpenAPI, e.g.: '2.1.0'" 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

931 # TODO: remove when discarding the openapi_prefix parameter 

932 if openapi_prefix: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

933 logger.warning( 1abcd

934 '"openapi_prefix" has been deprecated in favor of "root_path", which ' 

935 "follows more closely the ASGI standard, is simpler, and more " 

936 "automatic. Check the docs at " 

937 "https://fastapi.tiangolo.com/advanced/sub-applications/" 

938 ) 

939 self.webhooks: Annotated[ 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

940 routing.APIRouter, 

941 Doc( 

942 """ 

943 The `app.webhooks` attribute is an `APIRouter` with the *path 

944 operations* that will be used just for documentation of webhooks. 

945 

946 Read more about it in the 

947 [FastAPI docs for OpenAPI Webhooks](https://fastapi.tiangolo.com/advanced/openapi-webhooks/). 

948 """ 

949 ), 

950 ] = webhooks or routing.APIRouter() 

951 self.root_path = root_path or openapi_prefix 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

952 self.state: Annotated[ 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

953 State, 

954 Doc( 

955 """ 

956 A state object for the application. This is the same object for the 

957 entire application, it doesn't change from request to request. 

958 

959 You normally wouldn't use this in FastAPI, for most of the cases you 

960 would instead use FastAPI dependencies. 

961 

962 This is simply inherited from Starlette. 

963 

964 Read more about it in the 

965 [Starlette docs for Applications](https://www.starlette.dev/applications/#storing-state-on-the-app-instance). 

966 """ 

967 ), 

968 ] = State() 

969 self.dependency_overrides: Annotated[ 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

970 dict[Callable[..., Any], Callable[..., Any]], 

971 Doc( 

972 """ 

973 A dictionary with overrides for the dependencies. 

974 

975 Each key is the original dependency callable, and the value is the 

976 actual dependency that should be called. 

977 

978 This is for testing, to replace expensive dependencies with testing 

979 versions. 

980 

981 Read more about it in the 

982 [FastAPI docs for Testing Dependencies with Overrides](https://fastapi.tiangolo.com/advanced/testing-dependencies/). 

983 """ 

984 ), 

985 ] = {} 

986 self.router: routing.APIRouter = routing.APIRouter( 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

987 routes=routes, 

988 redirect_slashes=redirect_slashes, 

989 dependency_overrides_provider=self, 

990 on_startup=on_startup, 

991 on_shutdown=on_shutdown, 

992 lifespan=lifespan, 

993 default_response_class=default_response_class, 

994 dependencies=dependencies, 

995 callbacks=callbacks, 

996 deprecated=deprecated, 

997 include_in_schema=include_in_schema, 

998 responses=responses, 

999 generate_unique_id_function=generate_unique_id_function, 

1000 strict_content_type=strict_content_type, 

1001 ) 

1002 self.exception_handlers: dict[ 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1003 Any, Callable[[Request, Any], Response | Awaitable[Response]] 

1004 ] = {} if exception_handlers is None else dict(exception_handlers) 

1005 self.exception_handlers.setdefault(HTTPException, http_exception_handler) 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1006 self.exception_handlers.setdefault( 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1007 RequestValidationError, request_validation_exception_handler 

1008 ) 

1009 self.exception_handlers.setdefault( 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1010 WebSocketRequestValidationError, 

1011 # Starlette still has incorrect type specification for the handlers 

1012 websocket_request_validation_exception_handler, # type: ignore 

1013 ) 

1014 

1015 self.user_middleware: list[Middleware] = ( 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1016 [] if middleware is None else list(middleware) 

1017 ) 

1018 self.middleware_stack: ASGIApp | None = None 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1019 self.setup() 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1020 

1021 def build_middleware_stack(self) -> ASGIApp: 1abcd

1022 # Duplicate/override from Starlette to add AsyncExitStackMiddleware 

1023 # inside of ExceptionMiddleware, inside of custom user middlewares 

1024 debug = self.debug 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW

1025 error_handler = None 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW

1026 exception_handlers: dict[Any, ExceptionHandler] = {} 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW

1027 

1028 for key, value in self.exception_handlers.items(): 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW

1029 if key in (500, Exception): 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW

1030 error_handler = value 3;v =v (Bb)Bb`v {v dw ew fw

1031 else: 

1032 exception_handlers[key] = value 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW

1033 

1034 middleware = ( 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW

1035 [Middleware(ServerErrorMiddleware, handler=error_handler, debug=debug)] 

1036 + self.user_middleware 

1037 + [ 

1038 Middleware( 

1039 ExceptionMiddleware, handlers=exception_handlers, debug=debug 

1040 ), 

1041 # Add FastAPI-specific AsyncExitStackMiddleware for closing files. 

1042 # Before this was also used for closing dependencies with yield but 

1043 # those now have their own AsyncExitStack, to properly support 

1044 # streaming responses while keeping compatibility with the previous 

1045 # versions (as of writing 0.117.1) that allowed doing 

1046 # except HTTPException inside a dependency with yield. 

1047 # This needs to happen after user middlewares because those create a 

1048 # new contextvars context copy by using a new AnyIO task group. 

1049 # This AsyncExitStack preserves the context for contextvars, not 

1050 # strictly necessary for closing files but it was one of the original 

1051 # intentions. 

1052 # If the AsyncExitStack lived outside of the custom middlewares and 

1053 # contextvars were set, for example in a dependency with 'yield' 

1054 # in that internal contextvars context, the values would not be 

1055 # available in the outer context of the AsyncExitStack. 

1056 # By placing the middleware and the AsyncExitStack here, inside all 

1057 # user middlewares, the same context is used. 

1058 # This is currently not needed, only for closing files, but used to be 

1059 # important when dependencies with yield were closed here. 

1060 Middleware(AsyncExitStackMiddleware), 

1061 ] 

1062 ) 

1063 

1064 app = self.router 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW

1065 for cls, args, kwargs in reversed(middleware): 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW

1066 app = cls(app, *args, **kwargs) 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW

1067 return app 2mwnwow*v/s:s;s=spwqw?srwsw.vtwuwDbEbvwwwxw@sywFbGbzwAwBwCw[s]sDwEwFwGw^s/vZvHbIbHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w4w5wJb6w7w8w9w!w#wKbLb$w%w'w(w:v$sMbNb)w*w_s+w,w;v=v-w.w/w:w;w`s=w?w@w[w]wt U u v w x y V ^w_w{s`w{w|w}w~waxObbxPbcxdxexfx|sgx}shx'vh i j k ix~sjxatkx~ abbbz A cbdblxbtmxnxoxpxqxctrxsxtxuxvxwxxxyxQbRbW SbTbX UbVbWbzxAxBxdtCxetftDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x8x9x!x#x$x%x'x(x)x*x+x,x-x.x/x:x;x=x?x@x[x]xgt^xhtXbYbZb0b1b2b3b_x`x{x|x}x~xaybyitcy4bdyey5b6b7b8beb{ 9bfb!bgbfy#b$bgyjthbB hyktiyjykylymynyoypyqyrysytyltuyvywyxyyyzyAyByCyDyEyFyGyHyIyJyKyLyMyNyOyPyQyRySyTyUyVyWyXyYyZy0y1y2y3y4ymt5y6y7y8y9y!y#y$y%y'y(y)y*y+y,y-y.y/y:y;y=y?y@y[y]y^y_y`y{y|y}y~yazbzczdzezfzgzhzizjzkzlzmznzozpzqzrznt%bszot0vtzuzvzwzxzyzptzzAzBzqtCzDzEzFzGzHzIzJzKzLzMzNzOzPzQz+sRzSz?v@v%s[v-sTzUzVzWzXzYzZz0z1z2z3z4z5z6z7z8z9z!z#z$z%z'z(z)z*z+z,z-z.z/z:z;z=z?z@z[z]z^z_z`z{z|z}z~zaAbArtcAdAeAfAgAe pd'b1v2v3vhAiAjAkAlAmAnAoApAqArAsAtA]c^cuAvAwAxAyAzAAABACADAEAFAGAHAIAJAKALAMANAOAPAQAstRASATAttUAVAWAutXAYAZA0A1A2A3A4A5A6A7A8A9A!A#A$A%A'A(A)A*A+A,A-A.A(b/A:A;A=A?A@A[A]A^A_A`A)b{A|A}A~AaBbBcBdBeBfBgBvthBiBwtjBkBlBmBnBoBpBqBxtrBytsBtBuBvBwBxByBzBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBztAtUBVBWBXBYBZB0B1B2BBt3B4B5B6B7B8B9BCt!B#BDt$B%B'BEt(BFt)B*BGt+BHt,BItJt-B.BKtLt/B:B;BMt=B?B@B[B]BNt^B_B`B{B|B}B~BaCbCcCOtdCeCfCgChCiCjCkClCmCnCoCpCqCrCsCtCuCvCwCxCyCzCACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCPtWCXCYCZC0C1C2C3C4C5C6C7C8C9C!C#C$C%C'C(C)C*C+C,C-C.C/C:C;C=C?C@C[C]C^C_C`C{C|C}C~CaDbDcDdDeDfDgDhDiDjDkDlDmDQtnDoDpDqDrDsDtDuDvDRtwDxDyDzDADBDCDDDEDFDGDHDIDJDStKDLDMDNDODPDQDRDSDTDUDVDTtWDXDUtYDZD0D1DVt2DWt3D4D5D6D7D8D9D!DXtYt#DZt$D0t%D'D1t2t(D)D3t4t*D+D,D-D.D/D:D;D=D?D@D[D]D^D_D`D{D|D}D~DaEbEcEdEeEfEgEhEiEjEkElEmEnEoEpE5tqErEsE6ttEuE7tvEwExEyEzE. / : ; 9 ! # $ ?cAEBECEDEEEFEGEHE*bIEJEKELEMENEOEPEibQERESETE8tUEVEWEXEYEZE0E1E2E3E+b9t4EY !t5E6E7E8E9E!E#E$E%E'E(E)E*E#t,b+E,E-E-b.b/b.E/E:E;E$t=E?E%t@E+v't(t)t*t[E]E+t^E_E]v`E{E:b;b|E}E~E,taF=b?bbFcFdFeF-t.tfFgFhFiF/t^v4v@b[bjFkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzFAFBFCFDFEFFFGFHF]bIFJFKFLFMFNF^b_bOFPFQFRF_v's`b{bSFTFUF:tVFWF;t`v{vXFYFZF0F1F=t2F3F4F5F6FC Z D E F G H 0 7F8F?t9F!F#F$F%F|b'F}b(F)F*F+F(vl m n o ,[email protected] J mbnb/F:F;F=F?F@F[F]F^F_F`F~bac1 bccc2 dcecfc{F[t|F}F]t~F^t_taGbGcGdGeGfGgGhGiGjGkGlGmGnGoGpGqGrGsGtGuGvGwGxGyGzGAGBGCGDGEGFGGGHGIGJGKGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG0G`t1Ggchcicjckclcmc2G3G4G5G6G7G8G9G!G{t#Gnc$G%Gocpcqcrcob| scpbtcqb'Gucvc(G|trbK )G}t~t*Gau+G,G-G.G/G:G;G=G?G@G[G]G^G_G`G{G|G}G~GaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHbuzHAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH0H1H2H3H4H5H6H7H8H9H!H#H$H%H'Hcuwc(H5v)H*H+H,H-H.H/H:H;H=H?H@H[H]H^H_H`H{H|H}H~HaIbIcIdI|v(s}v)s~v.seIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIduyIzIAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZIf qdxc0I6v1I7v2I8v3I4I5I6I7I8I9I!I#I$I%I_c`c'I(I)I*I+I,I-I.Ieu/Ifu:I;I=Iguhuiu?Iju@Iku[Ilu]I^I_I`I{I|I}Imu~IaJbJnucJdJeJoufJgJhJiJjJkJlJmJnJoJpJqJrJsJtJuJvJwJxJyJzJAJBJCJDJpuycEJFJGJHJIJJJKJLJMJNJzcOJPJQJRJSJTJUJVJWJXJYJquZJ0Jru,v1J2J3Jsutu4J5J6J7J8Juu9Jvu!J#J$J%J'J(J)J*J+J,Jwu-J.J/J:J;J=J?J@J[J]J^J_J`J{J|J}J~JaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqKrKsKtKuKvKwKxuxKyuyKzKzuAuAKBuCuBKCKDuDKEKEuFKFuGKHKGuHuIKJKKKLKMKNKOKPKQKIuRKSKTKUKJuVKKuWKXKYKZK0K1K2K3K4K5K6K7K8K9K!K#K$K%K'K(K)K*K+K,K-K.K/K:K;K=K?K@K[K]K^KLu_K`K{K|K}K~KaLbLcLdLeLfLgLhLiLjLkLlLmLnLoLpLqLrLsLtLuLvLwLxLyLzLALBLCLDLMuELFLGLHLILJLKLLLMLNLOLPLQLRLSLTLULVLWLXLYLZL0L1L2L3L4L5L6L7L8L9L!L#L$L%L'L(L)L*L+L,L-L.L/L:L;LNu=LOu?L@L[L]L^L_L`LPu{LQu|LRu}L~LaMbMcMdMeMfMgMhMiMjMkMlMSumMTunMoMpMUuqMrMsMtMuMvMwMxMyMzMAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMVuWMWuXMYMZMXu0M1MYu2M3M4M5M6M= ? @ [ % ' ( ) @c7M8M9M!M#M$M%M'M(M)MAc*M+M,M-M.M/M:M;Msb=M?M@M[M]M^MZu_M`M{M|M}M~MaNbNcNBcdNeN3 0ufNgNhNiNjNkNlNmNnNoNpNqNrNsNtN1uCcuNvNDcEcFcwNxN2uyNzN3u4uAN-v5u6u7u8uBNCNDN9uENFNGNawHNINJNGcHcKNLNMNNN!uONIcJcPNQNRNSN#u$uTNUNVNWNXN%uYNbw9vKcLcZN0N1N2N3N4N5N6N7N8N9N!N#N$N%N'N(N)N*N+N,N-N.N/N:N;N=N?N@N[N]N^N_N`N{N|NMc}N~NaObOcOdOeONcOcfOgOhOiOjOkOcw*sPcQclOmOnO'uoOpOqOdwewfwrOsOtOuOvOwOxO(uyOzOAOBOCODOEO)uFOL 4 M N O P Q 5 GO*uHO+uIO,uJOKOLOMONOOORcPOQOScROSOTOUOVOWOXO)vp q r s YO-uZO.u0OtbubvbR S wbxb1O/u2O3O4O5O6O:u7O8O9O!O#O$O%O'O(OTcUc6 VcWc7 XcYcZc)O;u*O+O=u,[email protected]/O:O;O=O?O@O[O]O^O_O`O{O|O}O~OaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzPAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP0P1P2P3P4P5P6P7P8P9P[u!P]u0c1c2c3c4c5c6c#P$P%P'P(P)P*P+P,P-P.P/P:P^u;P7c=P?P@P8c9c!c#cyb} $czb%cAb[P'c(c]P_uBbT ^P`u_P`P{u{P|P}P~PaQ|ubQcQdQeQ}ufQgQ~uhQiQavjQkQlQmQnQbvoQpQcvqQrQsQtQuQvQwQxQyQzQAQBQCQDQEQFQGQHQIQJQKQLQMQNQOQPQdvQQRQSQTQUQVQWQXQYQZQ0Q1Q2Q3Qev4Q5Q6Q7Q8Q9Q!Q#Qfv$Q%Qgv'Q(Q)Q*Q+Q,Q-Q.Q/Q:Q;Q=Q?Q@Q[Q]Q^Q_Q`Q{Q|Q}Q~QaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRhv)cuR!vvRwRxRyRzRARBRCRDRERFRGRHRIRJRKRLRMRgwhwiwNRORPRQRRRSRTRURVRWRXRYRZR0R1R2R3R4R5R6R7R8R9R!R#R$R%Rg rd*c#v$v%v'R(R)R*R+R,R-R{c|c.R/R:R;R=R?R@R[R]R^R_R`R{R|R}R~RaSbScSdSeSfSgShSiviSjSkSlSmSnSoSpSqSrSsStSjvuSvS+cwSxSySzSASBSCSDS,cESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS0S1S2S3S4S5S6S7S8S9S!S#S$S%S'S(S)S*S+S,S-S.S/S:Skv;S=S?S@S[S]S^S_S`S{S|S}S~SaTbTcTdTeTfTgThTiTjTkTlTmTnToTpTqTrTsTtTuTvTwTxTyTzTATBTCTDTETFTGTHTITJTKTLTMTNTlvOTPTQTRTSTTTUTVTWTXTYTZT0T1T2T3T4T5T6T7T8T9T!T#T$T%T'T(T)T*Tmv+T,T-T.T/T:T;T=T?T@T[T]T^T_T`T{T|T}Tnvov~TaUpvbUcUdUeUqvfUgUhUiUjUkUlUmUnUoUpUqUrUrvsvsUtUuUvUwUxUyUzUAUBUCUDUEUFUGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU0U1U2U3U4U5U6Utv7Uuv8U9U!U#U$U%U'U(U)Uvv*Uwv+Uxv,U-U.Uyv/Uzv:U;UAv=U?U@UBv[U]UCv^U_U`U{UDvEv|UFv}UGvHv~UaVIvJvbVcVKvLvdVeVfVgVhViVjVkVlVmVMvnVoVpVqVrVsVtVuVvVwVNvxVyVzVAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVOvQVRVPvSVTVUVVVQvWVRvXVYVZV0VSv1V2VTv3V4V5V6V7V] ^ _ ` * + , - [c8V9V!VUv#V$V%V'V(V)V*V+VVv,s,V-c-V.V/V:V;V=V?V@V[VCb]V^V_V`V{V|V}V~VWvaWbWcWdWeWfWgWhWiWjWkWlWmW.cnWoW8 XvpWqWrWsWtWuWvWwWxWyWzWAWBWCWDWEWFWGWHWYv/cIWJWKW:c;c=cLWMW

1068 

1069 def openapi(self) -> dict[str, Any]: 1abcd

1070 """ 

1071 Generate the OpenAPI schema of the application. This is called by FastAPI 

1072 internally. 

1073 

1074 The first time it is called it stores the result in the attribute 

1075 `app.openapi_schema`, and next times it is called, it just returns that same 

1076 result. To avoid the cost of generating the schema every time. 

1077 

1078 If you need to modify the generated OpenAPI schema, you could modify it. 

1079 

1080 Read more in the 

1081 [FastAPI docs for OpenAPI](https://fastapi.tiangolo.com/how-to/extending-openapi/). 

1082 """ 

1083 if not self.openapi_schema: 2SWTWUW*v/s:s;s=sVW?sWWXW@s[s]sYW^sZW$s_s0W1W`s2Wt U u v w x y V 3W{s4W5W6W7W8W|s}sh i j k 9W~sat!Wz A btct#W$WW X %Wdtetft+7,7-7.7]5^5/7:7;7=7?7@7_5`5[7]7^7_7`7{7{5|5|7}7~7a8b8c8}5~5d8e8f8g8h8i8a6b6j8k8l8m8n8o8c6d6p8q8r8s8t8u8e6f6v8w8x8y8z8A8g6h6B8C8D8E8F8G8i6j6H8I8J8K8L8M8k6l6N8O8P8Q8R8S8m6n6T8U8V8W8X8o6Y8p6Z80818283848q6r65868788898!8s6t6#8$8%8'8(8)8u6v6*8+8,8-8.8/8w6x6:8;8=8?8@8[8y6z6]8^8_8`8{8|8A6B6}8~8a9C6D6b9c9d9e9f9E6F6g9h9i9j9k9l9G6H6m9n9o9p9q9r9I6J6s9t9u9v9w9x9K6L6y9z9'Wgtht(WitjtB kt)W*W+W,W-W.Wlt/W:W;W=W?W@W[W]W^W_W`W{W|W}W~WaXbXcXmtdXeXfXgXhXiXjXkXntotlXmXnXptoXqtpX+sjw%s-sqXrXsXtXuXvXwXxXyXzXAXBXCXDXEXFXGXHXIXJXKXLXMXNXrtOXPXe QXRXSXTXUXVXWXXXYXZX0X1X2X3X4Xst5Xtt6Xut7X8X9X!X#X$X%X'X(X)X*X+X,X-X.X/X:X;Xvt=Xwt?X@X[X]X^Xxtyt_X`X{X|X}XA9~XaYbYcYdYeYfYgYhYztAtiYjYkYlYmYBtnYoYpYCtqYDtrYsY75EtFttYGtHtItJtKtLtuYMtvYwYNtxYyYzYAYBYOtCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZYPt0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y!Y#Y$Y%Y'Y(Y)Y*Y+Y,Y-Y.Y/Y:Y;Y=Y?Y@Y[Y]Y^Y_Y`YQt{Y|Y}Y~YRtaZbZcZdZeZfZgZhZStiZjZkZlZTtmZUtnZVtWtoZpZqZXtrZYtZt0tsZ1t2t3t4ttZuZvZwZxZyZzZAZBZCZDZEZFZGZHZIZJZKZ5tLZ6t7tMZNZOZPZQZRZSZTZUZNWVZWZ8t9tY !tXZYZ#t(5)5$tZZ%t+v't(t)t*t0Z+t1Z2Z,t-t.t3Z/t4Z's:t;t5Z=t6ZC Z D E F G H 0 7Z?t8Z9Z!Z#Z$Z%Z'Zl m n o (Z@t)Z*ZI J +Z,Z-Z.Z1 2 [t]t^t_tB9C9D9E9M6N6F9G9H9I9J9K9O6P6L9M9N9O9P9Q9Q6R6R9S9T9U9V9W9S6T6X9Y9Z9091929U6V6394959697989W6X699!9#9$9%9'9Y6Z6(9)9*9+9,9-90616.9/9:9;9=9?92636@9[9]9^9_9`94656{9|9}9~9a!b!6676c!d!e!f!g!h!8696i!j!k!l!m!n!!6#6o!p!q!r!s!t!$6%6u!v!w!x!y!z!'6(6A!B!C!D!E!F!)6*6G!H!I!J!K!L!+6,6M!N!O!P!Q!R!-6.6S!T!U!/6:6V!W!X!Y!Z!;6=60!1!2!3!4!5!?6@66!7!8!9!!!#![6]6$!%!'!(!)!*!^6_6+!,!/Z`t:Z;Z{t|tK }t~tau=Z?Z@Z[Z]Z^Z_Z`Z{Z|Z}Z~Za0b0c0d0e0f0g0h0i0j0k0bul0m0n0o0p0q0r0s0cut0u0v0w0x0y0z0A0OW(s)s.sB0C0D0E0F0G0H0I0J0K0L0duM0N0O0P0Q0R0S0T0U0V0W0X0Y0Z000f 102030405060eufuguhuiujuku70lumu80nu90ou!0#0$0%0'0(0)0*0+0,0-0.0pu/0:0;0=0?0qu@0rusutu[0]0^0uuvu_0`0{0|0}0`6wu~0a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1xuyus1zuAuBuCut1Duu1Euv1FuGuHuw1x1y1z1A1B1IuC1JuKuD1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1LuW1X1Y1Z101112131415161718191!1#1$1%1'1(1)1*1+1Mu,1-1.1/1:1;1=1?1@1[1]1^1_1`1{1|1}1~1a2b2c2d2e2f2g2h2i2j2k2l2NuOum2n2PuQuRuo2p2q2r2s2t2u2v2SuTuw2x2y2Uuz2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2VuWuS2XuYuT2U2V2W2X2Y2Z20212PW2232Zu423 0u52621u2u3u4u-v5u6u7u8u729u8292!u#u$u!2%u#2*s'u$2%2(u)uL 4 M N O P Q 5 *u+u,u'2(2)2*2+2,2p q r s -2-u.u.2R S /u:u/2:26 7 ;u=u?u@u-!.!{6/!|6}6:!;!=!?!~6@!a7b7[!]!^!_!`!c7d7e7{!|!}!~!f7a#g7h7b#c#d#e#f#g#i7j7k7h#i#j#l7k#m7n7l#m#n#o#o7p#p7q7q#r#s#t#r7u#s7t7v#w#x#y#u7z#v7w7A#B#C#D#x7E#y7z7F#G#H#I#J#A7B7C7K#L#M#N#O#D7E7F7P#Q#R#S#T#G7H7I7U#V#W#X#J7Y#K7L7Z#0#1#2#3#4#M7N7O75#6#7#8#P7Q7R79#!###$#S7%#T7U7'#(#)#*#V7+#W7X7,#-#.#Y7Z707/#:#;#=#172737?#@#[#47]#5767^#_#`#{#|#778797}#~#a$b$c$d$!7#7e$$7;2[u]u=2^u_uT `u?2{u@2[2|u]2}u~uav^2bvcv_2`2{2|2}2~2a3b3dvc3d3e3f3evg3h3fvgvi3j3k3l3hvm3n3o3p3q3r3s3t3QWkwlwRWu3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3g V3W3X3Y3Z303132333435363738393!3#3$3%3iv'3(3)3*3+3,3-3.3/3:3jv;3=3?3@3[3]3^3_3`3{3|3}3~3a4b4c4d4e4f4g4h4i4f$j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4A4B4C4D4E4F4G4H485kvI4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z404142434445464748494!4#4$4%4'4(4)4*4+4,4-4.4/4:4;4=4?4@4lv[4]4^4_4`4{4|4}4~4a5b5c5d5e5f5mvg5h5i5j5nvovpvk5qvl5m5n5o5p5q5rvsvr5s5t5u5v5w5x5y5z5A5B5C5tvuvD5E5vvwvxvyvzvAvF5BvCvG5DvEvFvGvHvIvJvKvLvH5I5J5MvK5L5M5NvN5O5P5Q5R5S5OvPvT5QvRvU5SvTvV5W5X5Y5Z505Uv15Vv,s2535Wv458 Xv5565Yv

1084 self.openapi_schema = get_openapi( 2SWTWUW*v/s:s;s=sVW?sWWXW@s[s]sYW^sZW$s_s0W1W`s2Wt U u v w x y V 3W{s4W5W6W7W8W|s}sh i j k 9W~sat!Wz A btct#W$WW X %Wdtetft]5^5_5`5{5|5}5~5a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w6x6y6z6A6B6C6D6E6F6G6H6I6J6K6L6'Wgtht(WitjtB kt)W*W+W,W-W.Wlt/W:W;W=W?W@W[W]W^W_W`W{W|W}W~WaXbXcXmtdXeXfXgXhXiXjXkXntotlXmXnXptoXqtpX+sjw%s-sqXrXsXtXuXvXwXxXyXzXAXBXCXDXEXFXGXHXIXJXKXLXMXNXrtOXPXe QXRXSXTXUXVXWXXXYXZX0X1X2X3X4Xst5Xtt6Xut7X8X9X!X#X$X%X'X(X)X*X+X,X-X.X/X:X;Xvt=Xwt?X@X[X]X^Xxtyt_X`X{X|X}X~XaYbYcYdYeYfYgYhYztAtiYjYkYlYmYBtnYoYpYCtqYDtrYsYEtFttYGtHtItJtKtLtuYMtvYwYNtxYyYzYAYBYOtCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZYPt0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y!Y#Y$Y%Y'Y(Y)Y*Y+Y,Y-Y.Y/Y:Y;Y=Y?Y@Y[Y]Y^Y_Y`YQt{Y|Y}Y~YRtaZbZcZdZeZfZgZhZStiZjZkZlZTtmZUtnZVtWtoZpZqZXtrZYtZt0tsZ1t2t3t4ttZuZvZwZxZyZzZAZBZCZDZEZFZGZHZIZJZKZ5tLZ6t7tMZNZOZPZQZRZSZTZUZNWVZWZ8t9tY !tXZYZ#t(5)5$tZZ%t+v't(t)t*t0Z+t1Z2Z,t-t.t3Z/t4Z's:t;t5Z=t6ZC Z D E F G H 0 7Z?t8Z9Z!Z#Z$Z%Z'Zl m n o (Z@t)Z*ZI J +Z,Z-Z.Z1 2 [t]t^t_tM6N6O6P6Q6R6S6T6U6V6W6X6Y6Z606162636465666768696!6#6$6%6'6(6)6*6+6,6-6.6/6:6;6=6?6@6[6]6^6_6/Z`t:Z;Z{t|tK }t~tau=Z?Z@Z[Z]Z^Z_Z`Z{Z|Z}Z~Za0b0c0d0e0f0g0h0i0j0k0bul0m0n0o0p0q0r0s0cut0u0v0w0x0y0z0A0OW(s)s.sB0C0D0E0F0G0H0I0J0K0L0duM0N0O0P0Q0R0S0T0U0V0W0X0Y0Z000f 102030405060eufuguhuiujuku70lumu80nu90ou!0#0$0%0'0(0)0*0+0,0-0.0pu/0:0;0=0?0qu@0rusutu[0]0^0uuvu_0`0{0|0}0`6wu~0a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1xuyus1zuAuBuCut1Duu1Euv1FuGuHuw1x1y1z1A1B1IuC1JuKuD1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1LuW1X1Y1Z101112131415161718191!1#1$1%1'1(1)1*1+1Mu,1-1.1/1:1;1=1?1@1[1]1^1_1`1{1|1}1~1a2b2c2d2e2f2g2h2i2j2k2l2NuOum2n2PuQuRuo2p2q2r2s2t2u2v2SuTuw2x2y2Uuz2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2VuWuS2XuYuT2U2V2W2X2Y2Z20212PW2232Zu423 0u52621u2u3u4u-v5u6u7u8u729u8292!u#u$u!2%u#2*s'u$2%2(u)uL 4 M N O P Q 5 *u+u,u'2(2)2*2+2,2p q r s -2-u.u.2R S /u:u/2:26 7 ;u=u?u@u{6|6}6~6a7b7c7d7e7f7g7h7i7j7k7l7m7n7o7p7q7r7s7t7u7v7w7x7y7z7A7B7C7D7E7F7G7H7I7J7K7L7M7N7O7P7Q7R7S7T7U7V7W7X7Y7Z707172737475767778797!7#7$7;2[u]u=2^u_uT `u?2{u@2[2|u]2}u~uav^2bvcv_2`2{2|2}2~2a3b3dvc3d3e3f3evg3h3fvgvi3j3k3l3hvm3n3o3p3q3r3s3t3QWkwlwRWu3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3g V3W3X3Y3Z303132333435363738393!3#3$3%3iv'3(3)3*3+3,3-3.3/3:3jv;3=3?3@3[3]3^3_3`3{3|3}3~3a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4A4B4C4D4E4F4G4H4kvI4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z404142434445464748494!4#4$4%4'4(4)4*4+4,4-4.4/4:4;4=4?4@4lv[4]4^4_4`4{4|4}4~4a5b5c5d5e5f5mvg5h5i5j5nvovpvk5qvl5m5n5o5p5q5rvsvr5s5t5u5v5w5x5y5z5A5B5C5tvuvD5E5vvwvxvyvzvAvF5BvCvG5DvEvFvGvHvIvJvKvLvH5I5J5MvK5L5M5NvN5O5P5Q5R5S5OvPvT5QvRvU5SvTvV5W5X5Y5Z505Uv15Vv,s2535Wv458 Xv5565Yv

1085 title=self.title, 

1086 version=self.version, 

1087 openapi_version=self.openapi_version, 

1088 summary=self.summary, 

1089 description=self.description, 

1090 terms_of_service=self.terms_of_service, 

1091 contact=self.contact, 

1092 license_info=self.license_info, 

1093 routes=self.routes, 

1094 webhooks=self.webhooks.routes, 

1095 tags=self.openapi_tags, 

1096 servers=self.servers, 

1097 separate_input_output_schemas=self.separate_input_output_schemas, 

1098 external_docs=self.openapi_external_docs, 

1099 ) 

1100 return self.openapi_schema 2SWTWUW/s:s;s=sVW?sWWXW@s[s]sYW^sZW$s_s0W1W`s2Wt U u v w x y V 3W{s4W5W6W7W8W|s}sh i j k 9W~sat!Wz A btct#W$WW X %Wdtetft+7,7-7.7]5^5/7:7;7=7?7@7_5`5[7]7^7_7`7{7{5|5|7}7~7a8b8c8}5~5d8e8f8g8h8i8a6b6j8k8l8m8n8o8c6d6p8q8r8s8t8u8e6f6v8w8x8y8z8A8g6h6B8C8D8E8F8G8i6j6H8I8J8K8L8M8k6l6N8O8P8Q8R8S8m6n6T8U8V8W8X8o6Y8p6Z80818283848q6r65868788898!8s6t6#8$8%8'8(8)8u6v6*8+8,8-8.8/8w6x6:8;8=8?8@8[8y6z6]8^8_8`8{8|8A6B6}8~8a9C6D6b9c9d9e9f9E6F6g9h9i9j9k9l9G6H6m9n9o9p9q9r9I6J6s9t9u9v9w9x9K6L6y9z9'Wgtht(WitjtB kt)W*W+W,W-W.Wlt/W:W;W=W?W@W[W]W^W_W`W{W|W}W~WaXbXcXmtdXeXfXgXhXiXjXkXntotlXmXnXptoXqtpX+sjw%s-sqXrXsXtXuXvXwXxXyXzXAXBXCXDXEXFXGXHXIXJXKXLXMXNXrtOXPXe QXRXSXTXUXVXWXXXYXZX0X1X2X3X4Xst5Xtt6Xut7X8X9X!X#X$X%X'X(X)X*X+X,X-X.X/X:X;Xvt=Xwt?X@X[X]X^Xxtyt_X`X{X|X}XA9~XaYbYcYdYeYfYgYhYztAtiYjYkYlYmYBtnYoYpYCtqYDtrYsY75EtFttYGtHtItJtKtLtuYMtvYwYNtxYyYzYAYBYOtCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZYPt0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y!Y#Y$Y%Y'Y(Y)Y*Y+Y,Y-Y.Y/Y:Y;Y=Y?Y@Y[Y]Y^Y_Y`YQt{Y|Y}Y~YRtaZbZcZdZeZfZgZhZStiZjZkZlZTtmZUtnZVtWtoZpZqZXtrZYtZt0tsZ1t2t3t4ttZuZvZwZxZyZzZAZBZCZDZEZFZGZHZIZJZKZ5tLZ6t7tMZNZOZPZQZRZSZTZUZNWVZWZ8t9tY !tXZYZ#t(5)5$tZZ%t't(t)t*t0Z+t1Z2Z,t-t.t3Z/t4Z's:t;t5Z=t6ZC Z D E F G H 0 7Z?t8Z9Z!Z#Z$Z%Z'Zl m n o (Z@t)Z*ZI J +Z,Z-Z.Z1 2 [t]t^t_tB9C9D9E9M6N6F9G9H9I9J9K9O6P6L9M9N9O9P9Q9Q6R6R9S9T9U9V9W9S6T6X9Y9Z9091929U6V6394959697989W6X699!9#9$9%9'9Y6Z6(9)9*9+9,9-90616.9/9:9;9=9?92636@9[9]9^9_9`94656{9|9}9~9a!b!6676c!d!e!f!g!h!8696i!j!k!l!m!n!!6#6o!p!q!r!s!t!$6%6u!v!w!x!y!z!'6(6A!B!C!D!E!F!)6*6G!H!I!J!K!L!+6,6M!N!O!P!Q!R!-6.6S!T!U!/6:6V!W!X!Y!Z!;6=60!1!2!3!4!5!?6@66!7!8!9!!!#![6]6$!%!'!(!)!*!^6_6+!,!/Z`t:Z;Z{t|tK }t~tau=Z?Z@Z[Z]Z^Z_Z`Z{Z|Z}Z~Za0b0c0d0e0f0g0h0i0j0k0bul0m0n0o0p0q0r0s0cut0u0v0w0x0y0z0A0OW(s)s.sB0C0D0E0F0G0H0I0J0K0L0duM0N0O0P0Q0R0S0T0U0V0W0X0Y0Z000f 102030405060eufuguhuiujuku70lumu80nu90ou!0#0$0%0'0(0)0*0+0,0-0.0pu/0:0;0=0?0qu@0rusutu[0]0^0uuvu_0`0{0|0}0`6wu~0a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1xuyus1zuAuBuCut1Duu1Euv1FuGuHuw1x1y1z1A1B1IuC1JuKuD1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1LuW1X1Y1Z101112131415161718191!1#1$1%1'1(1)1*1+1Mu,1-1.1/1:1;1=1?1@1[1]1^1_1`1{1|1}1~1a2b2c2d2e2f2g2h2i2j2k2l2NuOum2n2PuQuRuo2p2q2r2s2t2u2v2SuTuw2x2y2Uuz2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2VuWuS2XuYuT2U2V2W2X2Y2Z20212PW2232Zu423 0u52621u2u3u4u5u6u7u8u729u8292!u#u$u!2%u#2*s'u$2%2(u)uL 4 M N O P Q 5 *u+u,u'2(2)2*2+2,2p q r s -2-u.u.2R S /u:u/2:26 7 ;u=u?u@u-!.!{6/!|6}6:!;!=!?!~6@!a7b7[!]!^!_!`!c7d7e7{!|!}!~!f7a#g7h7b#c#d#e#f#g#i7j7k7h#i#j#l7k#m7n7l#m#n#o#o7p#p7q7q#r#s#t#r7u#s7t7v#w#x#y#u7z#v7w7A#B#C#D#x7E#y7z7F#G#H#I#J#A7B7C7K#L#M#N#O#D7E7F7P#Q#R#S#T#G7H7I7U#V#W#X#J7Y#K7L7Z#0#1#2#3#4#M7N7O75#6#7#8#P7Q7R79#!###$#S7%#T7U7'#(#)#*#V7+#W7X7,#-#.#Y7Z707/#:#;#=#172737?#@#[#47]#5767^#_#`#{#|#778797}#~#a$b$c$d$!7#7e$$7;2[u]u=2^u_uT `u?2{u@2[2|u]2}u~uav^2bvcv_2`2{2|2}2~2a3b3dvc3d3e3f3evg3h3fvgvi3j3k3l3hvm3n3o3p3q3r3s3t3QWkwlwRWu3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3g V3W3X3Y3Z303132333435363738393!3#3$3%3iv'3(3)3*3+3,3-3.3/3:3jv;3=3?3@3[3]3^3_3`3{3|3}3~3a4b4c4d4e4f4g4h4i4f$j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4A4B4C4D4E4F4G4H485kvI4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z404142434445464748494!4#4$4%4'4(4)4*4+4,4-4.4/4:4;4=4?4@4lv[4]4^4_4`4{4|4}4~4a5b5c5d5e5f5mvg5h5i5j5nvovpvk5qvl5m5n5o5p5q5rvsvr5s5t5u5v5w5x5y5z5A5B5C5tvuvD5E5vvwvxvyvzvAvF5BvCvG5DvEvFvGvHvIvJvKvLvH5I5J5MvK5L5M5NvN5O5P5Q5R5S5OvPvT5QvRvU5SvTvV5W5X5Y5Z505Uv15Vv,s2535Wv458 Xv5565Yv

1101 

1102 def setup(self) -> None: 1abcd

1103 if self.openapi_url: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1104 

1105 async def openapi(req: Request) -> JSONResponse: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1106 root_path = req.scope.get("root_path", "").rstrip("/") 2SWTWUW*v/s:s;s=sVW?sWWXW@s[s]sYW^sZW$s_s0W1W`s2Wt U u v w x y V 3W{s4W5W6W7W8W|s}sh i j k 9W~sat!Wz A btct#W$WW X %Wdtetft'Wgtht(WitjtB kt)W*W+W,W-W.Wlt/W:W;W=W?W@W[W]W^W_W`W{W|W}W~WaXbXcXmtdXeXfXgXhXiXjXkXntotlXmXnXptoXqtpX+sjw%s-sqXrXsXtXuXvXwXxXyXzXAXBXCXDXEXFXGXHXIXJXKXLXMXNXrtOXPXe QXRXSXTXUXVXWXXXYXZX0X1X2X3X4Xst5Xtt6Xut7X8X9X!X#X$X%X'X(X)X*X+X,X-X.X/X:X;Xvt=Xwt*5?X@X[X]X^Xxtyt_X`X{X|X}X~XaYbYcYdYeYfYgYhYztAtiYjYkYlYmYBtnYoYpYCtqYDtrYsY75EtFttYGtHtItJtKtLtuYMtvYwYNtxYyYzYAYBYOtCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZYPt0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y!Y#Y$Y%Y'Y(Y)Y*Y+Y,Y-Y.Y/Y:Y;Y=Y?Y@Y[Y]Y^Y_Y`YQt{Y|Y}Y~YRtaZbZcZdZeZfZgZhZStiZjZkZlZTtmZUtnZVtWtoZpZqZXtrZYtZt0tsZ1t2t3t4ttZuZvZwZxZyZzZAZBZCZDZEZFZGZHZIZJZKZ5tLZ6t7tMZNZOZPZQZRZSZTZUZNWVZWZ8t9tY !tXZYZ#t(5)5$tZZ%t+v't(t)t*t0Z+t1Z2Z,t-t.t3Z/t4Z's:t;t5Z=t6ZC Z D E F G H 0 7Z?t8Z9Z!Z#Z$Z%Z'Zl m n o (Z@t)Z*ZI J +Z,Z-Z.Z1 2 [t]t^t_t/Z`t:Z;Z{t|tK }t~tau=Z?Z@Z[Z]Z^Z_Z`Z{Z|Z}Z~Za0b0c0d0e0f0g0h0i0j0k0bul0m0n0o0p0q0r0s0cut0u0v0w0x0y0z0A0OW(s)s.sB0C0D0E0F0G0H0I0J0K0L0duM0N0O0P0Q0R0S0T0U0V0W0X0Y0Z000f 102030405060eufuguhuiujuku70lumu80nu90ou!0#0$0%0'0(0)0*0+0,0-0.0pu/0:0;0=0?0qu@0ru,vsutu[0]0^0uuvu_0`0{0|0}0wu~0a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1xuyus1zuAuBuCut1Duu1Euv1FuGuHuw1x1y1z1A1B1IuC1JuKuD1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1LuW1X1Y1Z101112131415161718191!1#1$1%1'1(1)1*1+1Mu,1-1.1/1:1;1=1?1@1[1]1^1_1`1{1|1}1~1a2b2c2d2e2f2g2h2i2j2k2l2NuOum2n2PuQuRuo2p2q2r2s2t2u2v2SuTuw2x2y2Uuz2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2VuWuS2XuYuT2U2V2W2X2Y2Z20212PW2232Zu423 0u52621u2u3u4u-v5u6u7u8u729u8292!u#u$u!2%u#2*s'u$2%2(u)uL 4 M N O P Q 5 *u+u,u'2(2)2*2+2,2p q r s -2-u.u.2R S /u:u/2:26 7 ;u=u?u@u;2[u]u=2^u_uT `u?2{u@2[2|u]2}u~uav^2bvcv_2`2{2|2}2~2a3b3dvc3d3e3f3evg3h3fvgvi3j3k3l3hvm3n3o3p3q3r3s3t3QWkwlwRWu3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3g V3W3X3Y3Z303132333435363738393!3#3$3%3iv'3(3)3*3+3,3-3.3/3:3jv;3=3?3@3[3]3^3_3`3{3+5|3}3~3a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4A4B4C4D4E4F4G4H485kvI4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z404142434445464748494!4#4$4%4'4(4)4*4+4,4-4.4/4:4;4=4?4@4lv[4]4^4_4`4{4|4}4~4a5b5c5d5e5f5mvg5h5i5j5nvovpvk5qvl5m5n5o5p5q5rvsvr5s5t5u5v5w5x5y5z5A5B5C5tvuvD5E5vvwvxvyvzvAvF5BvCvG5DvEvFvGvHvIvJvKvLvH5I5J5MvK5L5M5NvN5O5P5Q5R5S5OvPvT5QvRvU5SvTvV5W5X5Y5Z505Uv15Vv,s2535Wv458 Xv5565Yv

1107 schema = self.openapi() 2SWTWUW*v/s:s;s=sVW?sWWXW@s[s]sYW^sZW$s_s0W1W`s2Wt U u v w x y V 3W{s4W5W6W7W8W|s}sh i j k 9W~sat!Wz A btct#W$WW X %Wdtetft'Wgtht(WitjtB kt)W*W+W,W-W.Wlt/W:W;W=W?W@W[W]W^W_W`W{W|W}W~WaXbXcXmtdXeXfXgXhXiXjXkXntotlXmXnXptoXqtpX+sjw%s-sqXrXsXtXuXvXwXxXyXzXAXBXCXDXEXFXGXHXIXJXKXLXMXNXrtOXPXe QXRXSXTXUXVXWXXXYXZX0X1X2X3X4Xst5Xtt6Xut7X8X9X!X#X$X%X'X(X)X*X+X,X-X.X/X:X;Xvt=Xwt*5?X@X[X]X^Xxtyt_X`X{X|X}X~XaYbYcYdYeYfYgYhYztAtiYjYkYlYmYBtnYoYpYCtqYDtrYsY75EtFttYGtHtItJtKtLtuYMtvYwYNtxYyYzYAYBYOtCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZYPt0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y!Y#Y$Y%Y'Y(Y)Y*Y+Y,Y-Y.Y/Y:Y;Y=Y?Y@Y[Y]Y^Y_Y`YQt{Y|Y}Y~YRtaZbZcZdZeZfZgZhZStiZjZkZlZTtmZUtnZVtWtoZpZqZXtrZYtZt0tsZ1t2t3t4ttZuZvZwZxZyZzZAZBZCZDZEZFZGZHZIZJZKZ5tLZ6t7tMZNZOZPZQZRZSZTZUZNWVZWZ8t9tY !tXZYZ#t(5)5$tZZ%t+v't(t)t*t0Z+t1Z2Z,t-t.t3Z/t4Z's:t;t5Z=t6ZC Z D E F G H 0 7Z?t8Z9Z!Z#Z$Z%Z'Zl m n o (Z@t)Z*ZI J +Z,Z-Z.Z1 2 [t]t^t_t/Z`t:Z;Z{t|tK }t~tau=Z?Z@Z[Z]Z^Z_Z`Z{Z|Z}Z~Za0b0c0d0e0f0g0h0i0j0k0bul0m0n0o0p0q0r0s0cut0u0v0w0x0y0z0A0OW(s)s.sB0C0D0E0F0G0H0I0J0K0L0duM0N0O0P0Q0R0S0T0U0V0W0X0Y0Z000f 102030405060eufuguhuiujuku70lumu80nu90ou!0#0$0%0'0(0)0*0+0,0-0.0pu/0:0;0=0?0qu@0ru,vsutu[0]0^0uuvu_0`0{0|0}0wu~0a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1xuyus1zuAuBuCut1Duu1Euv1FuGuHuw1x1y1z1A1B1IuC1JuKuD1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1LuW1X1Y1Z101112131415161718191!1#1$1%1'1(1)1*1+1Mu,1-1.1/1:1;1=1?1@1[1]1^1_1`1{1|1}1~1a2b2c2d2e2f2g2h2i2j2k2l2NuOum2n2PuQuRuo2p2q2r2s2t2u2v2SuTuw2x2y2Uuz2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2VuWuS2XuYuT2U2V2W2X2Y2Z20212PW2232Zu423 0u52621u2u3u4u-v5u6u7u8u729u8292!u#u$u!2%u#2*s'u$2%2(u)uL 4 M N O P Q 5 *u+u,u'2(2)2*2+2,2p q r s -2-u.u.2R S /u:u/2:26 7 ;u=u?u@u;2[u]u=2^u_uT `u?2{u@2[2|u]2}u~uav^2bvcv_2`2{2|2}2~2a3b3dvc3d3e3f3evg3h3fvgvi3j3k3l3hvm3n3o3p3q3r3s3t3QWkwlwRWu3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3g V3W3X3Y3Z303132333435363738393!3#3$3%3iv'3(3)3*3+3,3-3.3/3:3jv;3=3?3@3[3]3^3_3`3{3+5|3}3~3a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4A4B4C4D4E4F4G4H485kvI4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z404142434445464748494!4#4$4%4'4(4)4*4+4,4-4.4/4:4;4=4?4@4lv[4]4^4_4`4{4|4}4~4a5b5c5d5e5f5mvg5h5i5j5nvovpvk5qvl5m5n5o5p5q5rvsvr5s5t5u5v5w5x5y5z5A5B5C5tvuvD5E5vvwvxvyvzvAvF5BvCvG5DvEvFvGvHvIvJvKvLvH5I5J5MvK5L5M5NvN5O5P5Q5R5S5OvPvT5QvRvU5SvTvV5W5X5Y5Z505Uv15Vv,s2535Wv458 Xv5565Yv

1108 if root_path and self.root_path_in_servers: 2SWTWUW/s:s;s=sVW?sWWXW@s[s]sYW^sZW$s_s0W1W`s2Wt U u v w x y V 3W{s4W5W6W7W8W|s}sh i j k 9W~sat!Wz A btct#W$WW X %Wdtetft'Wgtht(WitjtB kt)W*W+W,W-W.Wlt/W:W;W=W?W@W[W]W^W_W`W{W|W}W~WaXbXcXmtdXeXfXgXhXiXjXkXntotlXmXnXptoXqtpX+sjw%s-sqXrXsXtXuXvXwXxXyXzXAXBXCXDXEXFXGXHXIXJXKXLXMXNXrtOXPXe QXRXSXTXUXVXWXXXYXZX0X1X2X3X4Xst5Xtt6Xut7X8X9X!X#X$X%X'X(X)X*X+X,X-X.X/X:X;Xvt=Xwt*5?X@X[X]X^Xxtyt_X`X{X|X}X~XaYbYcYdYeYfYgYhYztAtiYjYkYlYmYBtnYoYpYCtqYDtrYsY75EtFttYGtHtItJtKtLtuYMtvYwYNtxYyYzYAYBYOtCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZYPt0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y!Y#Y$Y%Y'Y(Y)Y*Y+Y,Y-Y.Y/Y:Y;Y=Y?Y@Y[Y]Y^Y_Y`YQt{Y|Y}Y~YRtaZbZcZdZeZfZgZhZStiZjZkZlZTtmZUtnZVtWtoZpZqZXtrZYtZt0tsZ1t2t3t4ttZuZvZwZxZyZzZAZBZCZDZEZFZGZHZIZJZKZ5tLZ6t7tMZNZOZPZQZRZSZTZUZNWVZWZ8t9tY !tXZYZ#t(5)5$tZZ%t't(t)t*t0Z+t1Z2Z,t-t.t3Z/t4Z's:t;t5Z=t6ZC Z D E F G H 0 7Z?t8Z9Z!Z#Z$Z%Z'Zl m n o (Z@t)Z*ZI J +Z,Z-Z.Z1 2 [t]t^t_t/Z`t:Z;Z{t|tK }t~tau=Z?Z@Z[Z]Z^Z_Z`Z{Z|Z}Z~Za0b0c0d0e0f0g0h0i0j0k0bul0m0n0o0p0q0r0s0cut0u0v0w0x0y0z0A0OW(s)s.sB0C0D0E0F0G0H0I0J0K0L0duM0N0O0P0Q0R0S0T0U0V0W0X0Y0Z000f 102030405060eufuguhuiujuku70lumu80nu90ou!0#0$0%0'0(0)0*0+0,0-0.0pu/0:0;0=0?0qu@0ru,vsutu[0]0^0uuvu_0`0{0|0}0wu~0a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1xuyus1zuAuBuCut1Duu1Euv1FuGuHuw1x1y1z1A1B1IuC1JuKuD1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1LuW1X1Y1Z101112131415161718191!1#1$1%1'1(1)1*1+1Mu,1-1.1/1:1;1=1?1@1[1]1^1_1`1{1|1}1~1a2b2c2d2e2f2g2h2i2j2k2l2NuOum2n2PuQuRuo2p2q2r2s2t2u2v2SuTuw2x2y2Uuz2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2VuWuS2XuYuT2U2V2W2X2Y2Z20212PW2232Zu423 0u52621u2u3u4u5u6u7u8u729u8292!u#u$u!2%u#2*s'u$2%2(u)uL 4 M N O P Q 5 *u+u,u'2(2)2*2+2,2p q r s -2-u.u.2R S /u:u/2:26 7 ;u=u?u@u;2[u]u=2^u_uT `u?2{u@2[2|u]2}u~uav^2bvcv_2`2{2|2}2~2a3b3dvc3d3e3f3evg3h3fvgvi3j3k3l3hvm3n3o3p3q3r3s3t3QWkwlwRWu3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3g V3W3X3Y3Z303132333435363738393!3#3$3%3iv'3(3)3*3+3,3-3.3/3:3jv;3=3?3@3[3]3^3_3`3{3+5|3}3~3a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4A4B4C4D4E4F4G4H485kvI4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z404142434445464748494!4#4$4%4'4(4)4*4+4,4-4.4/4:4;4=4?4@4lv[4]4^4_4`4{4|4}4~4a5b5c5d5e5f5mvg5h5i5j5nvovpvk5qvl5m5n5o5p5q5rvsvr5s5t5u5v5w5x5y5z5A5B5C5tvuvD5E5vvwvxvyvzvAvF5BvCvG5DvEvFvGvHvIvJvKvLvH5I5J5MvK5L5M5NvN5O5P5Q5R5S5OvPvT5QvRvU5SvTvV5W5X5Y5Z505Uv15Vv,s2535Wv458 Xv5565Yv

1109 server_urls = {s.get("url") for s in schema.get("servers", [])} 2$sh i j k +sjw%sNW.5=5'sl m n o OW(s)sPW*sp q r s QWkwlw,s

1110 if root_path not in server_urls: 2$sh i j k +sjw%sNW.5=5'sl m n o OW(s)sPW*sp q r s QWkwlw,s

1111 schema = dict(schema) 2$sh i j k +sjw%sNW.5=5'sl m n o OW(s)sPW*sp q r s QWkwlw,s

1112 schema["servers"] = [{"url": root_path}] + schema.get( 2$sh i j k +sjw%sNW.5=5'sl m n o OW(s)sPW*sp q r s QWkwlw,s

1113 "servers", [] 

1114 ) 

1115 return JSONResponse(schema) 2SWTWUW/s:s;s=sVW?sWWXW@s[s]sYW^sZW$s_s0W1W`s2Wt U u v w x y V 3W{s4W5W6W7W8W|s}sh i j k 9W~sat!Wz A btct#W$WW X %Wdtetft'Wgtht(WitjtB kt)W*W+W,W-W.Wlt/W:W;W=W?W@W[W]W^W_W`W{W|W}W~WaXbXcXmtdXeXfXgXhXiXjXkXntotlXmXnXptoXqtpX+sjw%s-sqXrXsXtXuXvXwXxXyXzXAXBXCXDXEXFXGXHXIXJXKXLXMXNXrtOXPXe QXRXSXTXUXVXWXXXYXZX0X1X2X3X4Xst5Xtt6Xut7X8X9X!X#X$X%X'X(X)X*X+X,X-X.X/X:X;Xvt=Xwt*5?X@X[X]X^Xxtyt_X`X{X|X}X~XaYbYcYdYeYfYgYhYztAtiYjYkYlYmYBtnYoYpYCtqYDtrYsY75EtFttYGtHtItJtKtLtuYMtvYwYNtxYyYzYAYBYOtCYDYEYFYGYHYIYJYKYLYMYNYOYPYQYRYSYTYUYVYWYXYYYZYPt0Y1Y2Y3Y4Y5Y6Y7Y8Y9Y!Y#Y$Y%Y'Y(Y)Y*Y+Y,Y-Y.Y/Y:Y;Y=Y?Y@Y[Y]Y^Y_Y`YQt{Y|Y}Y~YRtaZbZcZdZeZfZgZhZStiZjZkZlZTtmZUtnZVtWtoZpZqZXtrZYtZt0tsZ1t2t3t4ttZuZvZwZxZyZzZAZBZCZDZEZFZGZHZIZJZKZ5tLZ6t7tMZNZOZPZQZRZSZTZUZNWVZWZ8t9tY !tXZYZ#t(5)5$tZZ%t't(t)t*t0Z+t1Z2Z,t-t.t3Z/t4Z's:t;t5Z=t6ZC Z D E F G H 0 7Z?t8Z9Z!Z#Z$Z%Z'Zl m n o (Z@t)Z*ZI J +Z,Z-Z.Z1 2 [t]t^t_t/Z`t:Z;Z{t|tK }t~tau=Z?Z@Z[Z]Z^Z_Z`Z{Z|Z}Z~Za0b0c0d0e0f0g0h0i0j0k0bul0m0n0o0p0q0r0s0cut0u0v0w0x0y0z0A0OW(s)s.sB0C0D0E0F0G0H0I0J0K0L0duM0N0O0P0Q0R0S0T0U0V0W0X0Y0Z000f 102030405060eufuguhuiujuku70lumu80nu90ou!0#0$0%0'0(0)0*0+0,0-0.0pu/0:0;0=0?0qu@0ru,vsutu[0]0^0uuvu_0`0{0|0}0wu~0a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1xuyus1zuAuBuCut1Duu1Euv1FuGuHuw1x1y1z1A1B1IuC1JuKuD1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1LuW1X1Y1Z101112131415161718191!1#1$1%1'1(1)1*1+1Mu,1-1.1/1:1;1=1?1@1[1]1^1_1`1{1|1}1~1a2b2c2d2e2f2g2h2i2j2k2l2NuOum2n2PuQuRuo2p2q2r2s2t2u2v2SuTuw2x2y2Uuz2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2VuWuS2XuYuT2U2V2W2X2Y2Z20212PW2232Zu423 0u52621u2u3u4u5u6u7u8u729u8292!u#u$u!2%u#2*s'u$2%2(u)uL 4 M N O P Q 5 *u+u,u'2(2)2*2+2,2p q r s -2-u.u.2R S /u:u/2:26 7 ;u=u?u@u;2[u]u=2^u_uT `u?2{u@2[2|u]2}u~uav^2bvcv_2`2{2|2}2~2a3b3dvc3d3e3f3evg3h3fvgvi3j3k3l3hvm3n3o3p3q3r3s3t3QWkwlwRWu3v3w3x3y3z3A3B3C3D3E3F3G3H3I3J3K3L3M3N3O3P3Q3R3S3T3U3g V3W3X3Y3Z303132333435363738393!3#3$3%3iv'3(3)3*3+3,3-3.3/3:3jv;3=3?3@3[3]3^3_3`3{3+5|3}3~3a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4A4B4C4D4E4F4G4H485kvI4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z404142434445464748494!4#4$4%4'4(4)4*4+4,4-4.4/4:4;4=4?4@4lv[4]4^4_4`4{4|4}4~4a5b5c5d5e5f5mvg5h5i5j5nvovpvk5qvl5m5n5o5p5q5rvsvr5s5t5u5v5w5x5y5z5A5B5C5tvuvD5E5vvwvxvyvzvAvF5BvCvG5DvEvFvGvHvIvJvKvLvH5I5J5MvK5L5M5NvN5O5P5Q5R5S5OvPvT5QvRvU5SvTvV5W5X5Y5Z505Uv15Vv,s2535Wv458 Xv5565Yv

1116 

1117 self.add_route(self.openapi_url, openapi, include_in_schema=False) 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1118 if self.openapi_url and self.docs_url: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1119 

1120 async def swagger_ui_html(req: Request) -> HTMLResponse: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvgydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBpzeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1121 root_path = req.scope.get("root_path", "").rstrip("/") 295Zv'v0ve 1v2v3v!5,5-5#54v(v5vf 6v7v8v$5%59v)v!vg #v$v%v'5

1122 openapi_url = root_path + self.openapi_url 295Zv'v0ve 1v2v3v!5,5-5#54v(v5vf 6v7v8v$5%59v)v!vg #v$v%v'5

1123 oauth2_redirect_url = self.swagger_ui_oauth2_redirect_url 295Zv'v0ve 1v2v3v!5,5-5#54v(v5vf 6v7v8v$5%59v)v!vg #v$v%v'5

1124 if oauth2_redirect_url: 295Zv'v0ve 1v2v3v!5,5-5#54v(v5vf 6v7v8v$5%59v)v!vg #v$v%v'5

1125 oauth2_redirect_url = root_path + oauth2_redirect_url 295Zv0ve 1v2v3v!5,5-5#54v5vf 6v7v8v$5%59v!vg #v$v%v'5

1126 return get_swagger_ui_html( 295Zv'v0ve 1v2v3v!5,5-5#54v(v5vf 6v7v8v$5%59v)v!vg #v$v%v'5

1127 openapi_url=openapi_url, 

1128 title=f"{self.title} - Swagger UI", 

1129 oauth2_redirect_url=oauth2_redirect_url, 

1130 init_oauth=self.swagger_ui_init_oauth, 

1131 swagger_ui_parameters=self.swagger_ui_parameters, 

1132 ) 

1133 

1134 self.add_route(self.docs_url, swagger_ui_html, include_in_schema=False) 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvgydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBpzeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1135 

1136 if self.swagger_ui_oauth2_redirect_url: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvgydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBpzeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1137 

1138 async def swagger_ui_redirect(req: Request) -> HTMLResponse: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvgydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBpzeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1139 return get_swagger_ui_oauth2_redirect_html() 3%7 /v *Bb+Bb'7 ^v (7 bw

1140 

1141 self.add_route( 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvgydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBpzeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1142 self.swagger_ui_oauth2_redirect_url, 

1143 swagger_ui_redirect, 

1144 include_in_schema=False, 

1145 ) 

1146 if self.openapi_url and self.redoc_url: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde pd'bkglgmgngogpgqgrgsgtgugvg]c^cydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df qdxc:k;k=k?k@k[k]k^k_k`k_c`c,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg rd*cwpxpypzpApBp{c|czeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1147 

1148 async def redoc_html(req: Request) -> HTMLResponse: 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvgydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBpzeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1149 root_path = req.scope.get("root_path", "").rstrip("/") 2/5e )7*7:5f ;5g

1150 openapi_url = root_path + self.openapi_url 2/5e )7*7:5f ;5g

1151 return get_redoc_html( 2/5e )7*7:5f ;5g

1152 openapi_url=openapi_url, title=f"{self.title} - ReDoc" 

1153 ) 

1154 

1155 self.add_route(self.redoc_url, redoc_html, include_in_schema=False) 2a DbEb=e?eFbGb@e[e]e^e_e`eHbIbJbKbLbMbNb{e|e}et U u v w x y V ~eafObbfcfdfefffgfhfifjfkflfPbmfnfofpfqfrfsftfufvfwfh i j k ~ abbbz A cbdbxfyfzfAfBfCfQbRbW SbTbX UbVbWbXbYbZb0b1b2b3bDfEfFfGfHf4b5b6b7b8beb{ 9bfb!bgb#b$bIfJfhbB KfLfMfNfOfPf%bQfRfSfTfUfVfWfXfYfZf0fsdtd1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgudvdwdxde 'bkglgmgngogpgqgrgsgtgugvgydzdAdBdwgxgCdDdygzgAgBgCgDgEgFgGgHgEdFdIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g(b!g#g$g%g'g(g)g*g+g,g-g)b.g/g:g;g=g?g@g[g]g^gGdHdId_g`g{g|g}g~gahbhchdhehfhghJdKdhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzhAhBhChLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*iVdWd+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujXdYdZd0d1d2d3d4d5d6d7dvjwjxjyjzjAjBjCj8d9d!d#dDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSj. / : ; 9 ! # $ ?cTjUjVjWjXjYj*b$d%dibZj0j}c~cadbdcd+bY 1j2j3j,b-b.b/bb c :b;b4j5j=b?b6j7j8j9j!j#j@b[b]b^b_b`b{b$j%j'jC Z D E F G H 0 (j)j|b*j+j,j-j.j/j:j;j=j?j@j}b[j]j^j_j`j{j|j}j~jakbkl m n o jbkblbI J mbnbckdkekfkgkhk~bac1 bccc2 dcecfcgchcicjckclcmcikjkkklkmkncocpcqcrcob| scpbtcqbucvcnkokrbK pkqkrksktkukwcvkwkxkykzkAkBkCkDkEk'd(dFkGkHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k)d*d+df xc:k;k=k?k@k[k]k^k_k`k,d-d.d/d{k|k:d}k~kalblcldlelflglhliljlklll;d=dmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlycQlRlSlTlUlVlWlXlYlZlzc0l1l2l3l4l5l6l7l8l9l?d@d[d!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l]d^d?l@l[l]l^l_l`l{l|l}l~lambmcmdmemfmgmhmimjmkmlmmm_d`dnmompmqmrmsmtm{d|dumvmwmxmymzmAmBmCmDmEmFmGmHmImJmKmLmMmNmOmPmQmRmSmTmUmVmWmXmYmZm0m1m2m3m4m5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQncedeeefeRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8n9n!n#n$n%n'n(n)n*n+n,n-n.n/ngeheiejekelemeneoepe:n;n=n?n@n[n]n^nqeresete_n`n{n|n}n~naobocodoeofogohoiojoko= ? @ [ % ' ( ) @clomonooopoqorosoAcuevesbtouovowoddedfdgdBc3 xoyozoCcDcEcFcd GcHcAoBoIcJcCoDoEoFoGoHoKcLcMcNcOcPcQcIoJoKoL 4 M N O P Q 5 LoMoRcNoOoPoQoRoSoToUoVoWoXoScYoZo0o1o2o3o4o5o6o7o8op q r s tbubvbR S wbxb9o!o#o$o%o'oTcUc6 VcWc7 XcYcZc0c1c2c3c4c5c6c(o)o*o+o,o7c8c9c!c#cyb} $czb%cAb'c(c-o.oBbT /o:o;o=o?o@o)c[o]o^o_o`o{o|owe}o~oapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpxeyeg *cwpxpypzpApBpzeAeCpDpBeEpFpGpHpIpJpKpCeLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p+c3p4p5p6p7p8p9p!p,c#p$p%p'p(pDeEe)p*p+p,p-p.p/p:p;pFe=p?p@p[p]p^p_p`p{p|p}p~pGeaqbqcqdqHeeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzqAqBqCqDqEqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq0q1q2q3q4q5q6q7q8q9q!q#q$q%q'q(q)q*q+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZrUeVeWeXeYeZe0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjsks0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)elsmsnsospsqsrssstsusvs*e+e,e-e.e/ewsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRs] ^ _ ` * + , - [cSsTsUsVsWsXsYsZs0s1s2s-c:e;eCb3s4s5s6s7s8shdidjdkdldmdndod.c8 9s!s#s/c:c;c=c

1156 

1157 async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None: 1abcd

1158 if self.root_path: 3mw SW nw g$ TW UW ow *v /s :s ;s =s pw h$ qw i$ VW ?s j$ k$ l$ m$ n$ o$ p$ q$ r$ s$ t$ u$ v$ w$ x$ y$ z$ A$ B$ C$ rw D$ sw E$ .v tw uw F$ G$ H$ I$ J$ K$ L$ M$ Db Eb WW N$ vw O$ ww XW /5 %7 95 xw @s yw Fb Gb zw Aw Bw Cw [s ]s Dw Ew Fw Gw P$ YW ^s Q$ R$ /v Zv Hb Ib Hw Iw S$ T$ U$ V$ W$ X$ Y$ Z$ 0$ 1$ 2$ 3$ Jw Kw 4$ 5$ 6$ 7$ 8$ 9$ !$ #$ $$ %$ '$ ($ Lw )$ *$ Mw +$ ,$ -$ .$ Nw /$ Ow Pw Qw Rw :$ ;$ Sw =$ ?$ @$ [$ ]$ ^$ Tw _$ Uw `$ {$ |$ }$ ~$ a% Vw b% c% d% e% f% g% h% i% j% k% l% m% n% Ww o% p% q% r% Xw s% Yw Zw ZW t% u% v% w% x% 0w 1w y% z% A% B% C% D% E% F% G% H% I% J% K% L% M% N% O% P% Q% R% S% T% U% V% W% X% 2w 3w Y% Z% 0% 4w 1% 2% 3% 4% 5% 5w 6% 7% 8% Jb 6w 7w 9% !% #% $% %% '% (% )% *% +% ,% -% .% /% :% ;% =% ?% @% [% ]% ^% _% `% 8w {% |% }% 9w !w #w Kb Lb $w ~% a' b' c' d' e' %w 'w f' g' (w h' i' :v $s Mb Nb )w j' *w _s +w ,w k' 0W ;v =v l' m' n' o' -w .w p' 1W q' r' s' /w :w t' u' ;w `s =w v' ?w @w w' x' y' z' A' B' C' [w 2W ]w t U u v w x y V ^w 3W _w {s `w 4W {w D' |w E' }w 5W F' G' H' I' J' K' L' M' N' O' P' Q' R' S' T' U' V' W' X' Y' Z' 0' 1' 2' 3' 4' 5' 6' 7' 8' 9' !' #' $' %' '' (' )' *' +' ,' -' ~w .' /' :' ax ;' 6W Ob =' bx ?' @' Pb 7W [' cx ]' ^' _' `' {' |' dx 8W ex }' ~' fx |s gx }s a( hx 'v h i j k ix 9W ~s jx at kx !W ~ ab bb z A cb db lx bt mx nx ox px qx ct rx sx tx b( c( d( e( f( #W g( h( i( j( k( l( m( n( o( p( q( r( s( t( u( v( w( x( y( z( A( B( C( D( E( F( G( H( I( J( K( L( M( N( O( P( Q( R( S( T( U( V( W( X( Y( Z( 0( 1( 2( 3( 4( 5( 6( 7( 8( 9( !( #( $( %( '( (( )( *( +( ,( -( .( /( :( ;( =( ?( @( [( $W ux vx wx ]( ^( _( `( {( |( }( ~( a) b) c) d) e) f) g) h) i) j) k) l) m) n) o) p) q) r) s) t) u) v) w) x) xx yx Qb Rb W Sb Tb X Ub Vb Wb zx %W Ax Bx dt Cx et ft y) Dx z) A) B) Ex C) D) E) F) G) H) I) J) K) L) M) N) O) P) Q) R) S) T) U) V) W) X) Fx Gx Y) Z) 0) 1) 2) 3) 4) 5) 6) 7) 8) 9) !) #) $) %) ') () )) *) +) ,) -) .) /) :) ;) =) ?) @) [) Hx Ix ]) ^) _) `) {) |) }) ~) a* b* c* d* e* Jx f* g* h* i* j* k* l* m* n* o* p* q* r* s* t* u* v* w* x* Kx y* z* A* B* C* D* E* F* G* H* I* J* K* L* M* N* O* P* Q* R* S* T* U* V* W* X* Y* Lx Mx Z* 0* 1* 2* 3* 4* 5* 6* 7* 8* 9* !* #* $* %* '* (* )* ** +* ,* -* .* /* Nx Ox :* ;* =* ?* @* [* ]* ^* _* `* {* |* }* ~* a+ b+ c+ d+ e+ f+ g+ h+ Px Qx i+ j+ k+ l+ m+ n+ o+ p+ q+ r+ s+ t+ u+ v+ w+ x+ y+ z+ A+ B+ C+ D+ Rx Sx E+ F+ G+ H+ I+ J+ K+ L+ M+ N+ O+ P+ Q+ R+ S+ T+ U+ V+ W+ X+ Y+ Z+ Tx Ux 0+ 1+ 2+ 3+ 4+ 5+ 6+ 7+ 8+ 9+ !+ #+ $+ %+ '+ (+ )+ *+ ++ ,+ -+ .+ Vx Wx /+ :+ ;+ =+ ?+ @+ [+ ]+ ^+ _+ `+ {+ |+ }+ ~+ a, b, c, d, e, f, g, Xx Yx h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, Zx 0x D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, 1x 2x Z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, !, #, $, %, ', (, ), *, +, ,, -, 3x 4x ., /, :, ;, =, ?, @, [, ], ^, _, `, {, |, }, ~, a- b- c- d- e- f- 5x 6x g- h- i- j- k- l- m- n- o- p- q- r- s- t- u- v- w- x- y- z- A- B- 7x 8x C- D- E- F- G- H- I- J- K- L- M- N- O- P- Q- R- S- T- U- V- W- X- 9x !x Y- Z- 0- 1- 2- 3- 4- 5- 6- 7- 8- 9- !- #- $- %- '- (- )- *- +- ,- #x $x -- .- /- :- ;- =- ?- @- [- ]- ^- _- `- {- |- }- ~- a. b. c. d. e. %x 'x f. g. h. i. j. k. l. (x )x m. n. o. p. q. r. s. t. u. v. w. x. y. z. A. B. C. *x +x D. E. F. G. H. I. J. K. L. M. N. O. P. Q. R. S. T. U. V. W. X. Y. ,x -x Z. 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. !. #. $. %. '. (. ). *. +. ,. -. .x /x .. /. :. ;. =. ?. @. [. ]. ^. _. `. {. |. }. ~. a/ b/ c/ d/ e/ f/ :x ;x g/ h/ i/ j/ k/ l/ m/ n/ o/ p/ =x q/ ?x 'W r/ s/ @x t/ u/ v/ w/ x/ [x ]x gt ^x ht Xb Yb Zb 0b 1b 2b 3b y/ z/ A/ B/ C/ D/ E/ F/ G/ H/ I/ J/ _x `x (W K/ L/ M/ N/ O/ P/ Q/ R/ S/ T/ U/ V/ W/ X/ Y/ Z/ 0/ 1/ 2/ 3/ 4/ 5/ {x |x 6/ }x ~x 7/ ay 8/ 9/ !/ #/ $/ %/ by it cy 4b dy '/ ey (/ )/ 5b 6b 7b 8b eb { 9b fb !b gb fy #b $b gy jt hb B hy kt )W iy jy *W ky ly +W my ny ,W oy py -W qy ry .W sy ty lt */ uy /W vy wy :W xy yy ;W +/ zy Ay =W By Cy ?W Dy Ey @W ,/ Fy -/ Gy [W ./ Hy // Iy ]W :/ Jy ;/ Ky ^W =/ Ly My _W Ny ?/ Oy `W @/ Py Qy {W [/ Ry Sy |W ]/ Ty Uy }W ^/ Vy Wy ~W _/ Xy Yy `/ {/ |/ }/ ~/ a: Zy 0y aX b: c: 1y 2y bX d: e: cX f: g: 3y 4y mt 5y dX h: 6y 7y i: j: k: l: m: n: eX o: 8y 9y p: q: r: s: t: u: v: !y fX #y $y %y gX w: hX x: 'y (y iX )y y: *y jX z: +y ,y -y .y /y :y A: ;y =y B: C: D: E: F: ?y G: @y H: I: J: K: L: [y ]y M: N: O: ^y P: Q: R: _y S: T: `y {y U: V: W: X: Y: Z: 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: !: |y }y ~y #: $: %: ': kX az bz (: ): cz *: dz +: ez ,: fz gz hz iz jz kz -: lz .: mz /: nz :: oz ;: pz =: qz ?: @: rz nt %b sz ot [: 0v tz uz lX vz wz mX ]: ^: _: `: nX xz yz pt {: zz oX Az Bz qt |: Cz Dz }: Ez Fz Gz Hz Iz Jz ~: Kz a; Lz Mz pX Nz Oz Pz Qz +s Rz Sz ?v jw @v %s [v -s b; c; d; e; f; g; h; i; j; k; l; qX m; n; o; p; q; r; Tz s; t; u; Uz v; w; Vz x; y; z; rX A; B; C; D; E; F; G; H; Wz I; J; sX K; Xz L; Yz M; tX Zz 0z N; uX 1z 2z O; 3z P; 4z 5z Q; R; vX wX xX yX 6z 7z S; T; U; V; 8z 9z zX !z W; X; Y; Z; 0; 1; #z AX BX 2; 3; $z %z 'z (z CX DX )z *z 4; 5; 6; 7; 8; 9; +z ,z EX FX -z .z !; #; $; %; '; (; /z ); GX HX IX :z ;z =z *; +; ,; ?z @z -; .; /; [z JX ]z ^z :; ;; =; KX _z ?; @; [; `z ]; LX {z |z ^; _; MX }z `; {; |; ~z NX aA bA }; rt cA ~; dA OX eA fA PX gA a= e pd 'b b= 1v c= 2v d= 3v hA iA e= f= g= jA kA h= QX RX lA mA nA oA i= j= k= l= SX TX pA qA m= n= rA sA o= p= UX VX tA q= r= s= ]c t= u= v= w= ^c x= uA vA wA xA y= z= yA zA A= B= AA BA CA WX DA XX EA FA GA YX ZX 0X HA 1X IA 2X 3X JA 4X KA LA MA NA OA PA QA st 5X RA SA TA tt UA 6X VA WA ut XA C= YA D= E= ZA F= G= 0A H= 1A I= J= 2A K= 7X 8X 9X 3A L= M= N= O= 4A 5A P= Q= R= 6A S= 7A T= U= V= W= 8A 9A X= Y= Z= 0= !A #A 1= 2= 3= 4= $A %A 5= 6= 7= 8= 'A !X #X $X %X 'X (X 9= (A )A != *A +A )X *X #= ,A $= %= -A .A '= (= +X ,X (b )= *= /A :A ;A =A += ,= -= .= ?A @A /= := ;= == [A ]A ?= ^A @= [= _A `A )b {A ]= |A }A ^= ~A -X .X _= `= {= |= }= ~= a? b? aB bB cB dB c? d? e? f? /X :X ;X eB fB gB vt hB =X iB wt *5 jB kB lB ?X @X [X ]X mB nB oB pB ^X qB xt rB yt sB g? tB uB _X `X vB {X wB xB |X yB h? zB }X AB i? ~X BB CB DB aY EB FB bY GB HB cY IB JB j? dY eY KB LB MB NB k? fY OB PB QB RB l? m? n? o? gY hY SB TB p? q? r? s? t? u? zt At UB VB v? w? x? y? z? A? WB XB iY jY YB B? C? ZB D? E? kY lY 0B 1B F? G? 2B H? I? J? mY Bt 3B 4B K? 5B 6B L? nY oY 7B pY 8B M? 9B Ct !B qY N? #B Dt $B rY O? !5 %B sY 'B 75 Et (B Ft )B tY *B Gt +B Ht ,B It Jt -B .B Kt Lt /B uY :B P? ;B Mt =B ?B Q? vY @B [B ]B wY Nt xY ^B _B yY `B zY {B |B R? }B ~B AY aC bC BY S? cC Ot dC CY eC DY fC gC T? hC U? EY FY GY iC jC kC lC V? W? HY IY JY KY mC nC oC X? pC qC rC sC Y? Z? 0? 1? 2? 3? 4? 5? LY MY tC uC vC wC 6? 7? 8? 9? !? #? NY OY xC yC zC AC $? %? '? (? )? *? +? ,? PY QY BC CC DC EC -? .? /? :? ;? =? ?? @? RY SY FC GC [? ]? ^? _? `? {? TY UY HC IC JC |? }? ~? a@ KC VY LC b@ MC WY NC OC XY PC c@ QC YY RC d@ SC TC UC ZY VC e@ Pt 0Y WC XC f@ 1Y 2Y YC ZC 0C g@ h@ i@ j@ k@ 3Y 4Y 1C 2C l@ 3C m@ n@ o@ p@ 5Y 6Y 4C 5C 6C 7C q@ r@ 7Y 8Y 8C 9C !C s@ t@ #C 9Y !Y $C %C 'C (C u@ v@ #Y $Y )C *C +C ,C w@ x@ y@ z@ %Y 'Y -C .C A@ /C :C B@ (Y )Y ;C =C ?C C@ D@ @C *Y +Y [C ]C ^C _C E@ F@ ,Y -Y `C G@ H@ I@ {C |C J@ }C ~C aD .Y /Y bD cD dD eD K@ L@ :Y ;Y fD gD =Y ?Y M@ N@ hD iD O@ P@ @Y [Y Q@ jD R@ kD ]Y ^Y _Y S@ T@ U@ V@ lD mD W@ X@ Y@ Z@ `Y Qt 0@ 1@ nD oD pD 2@ 3@ 4@ {Y |Y qD rD sD tD 5@ 6@ }Y ~Y 7@ 8@ 9@ !@ uD vD #@ $@ %@ '@ Rt aZ wD xD (@ yD bZ cZ zD AD )@ BD CD *@ +@ ,@ -@ .@ dZ eZ DD /@ ED FD :@ ;@ =@ ?@ @@ [@ ]@ ^@ fZ gZ GD HD _@ `@ ID JD {@ |@ }@ ~@ hZ St a[ b[ c[ d[ KD e[ LD MD f[ g[ ND OD PD iZ QD jZ RD SD TD h[ i[ j[ k[ kZ lZ UD VD Tt WD mZ XD Ut YD ZD 0D nZ 1D Vt 2D l[ Wt 3D m[ 4D oZ pZ 5D 6D qZ 7D 8D 9D !D Xt rZ Yt #D Zt $D 0t sZ %D 'D 1t 2t (D )D 3t 4t *D +D n[ o[ ,D -D tZ uZ .D /D :D ;D vZ wZ =D ?D @D p[ q[ r[ s[ t[ [D ]D u[ v[ w[ x[ y[ z[ xZ yZ A[ B[ C[ D[ ^D E[ _D `D F[ G[ H[ I[ J[ K[ zZ AZ L[ M[ N[ O[ P[ Q[ R[ S[ T[ {D U[ V[ W[ X[ Y[ Z[ |D }D 0[ 1[ ~D aE 2[ 3[ BZ CZ 4[ 5[ 6[ 7[ 8[ 9[ ![ #[ $[ %[ '[ ([ )[ *[ +[ ,[ -[ .[ DZ EZ bE cE /[ dE eE :[ ;[ =[ FZ GZ fE gE ?[ @[ [[ ][ ^[ _[ hE iE `[ {[ jE HZ kE lE IZ mE JZ nE |[ }[ oE KZ pE 5t qE LZ rE ~[ sE 6t tE uE 7t vE wE xE yE zE a] . b] / MZ : NZ ; c] 9 d] ! OZ # PZ $ QZ e] ?c f] RZ g] h] i] j] k] l] AE BE SZ m] n] o] p] CE TZ q] r] s] DE EE t] FE GE UZ NW HE *b IE VZ JE KE LE ME WZ NE OE PE u] v] ib QE RE w] x] SE TE y] z] A] B] C] D] E] F] G] H] 8t UE VE WE XE YE I] J] K] L] ZE M] N] O] P] Q] 0E 1E 2E 3E +b 9t R] 4E Y !t 5E 6E S] T] XZ U] 7E YZ 8E 9E V] W] !E #E X] Y] $E Z] %E 'E (E 0] )E 1] *E #t ,b +E ,E 2] -E -b .b /b 3] 4] 5] 6] 7] 8] .E 9] /E :E ;E $t =E ?E ZZ %t @E +v 't (t )t *t [E ]E !] #] 0Z +t $] %] '] (] )] *] +] ,] -] .] /] :] ;] =] ?] @] [] ]] ^] _] ^E `] _E {] ]v `E |] }] ~] a^ b^ c^ {E d^ e^ :b ;b 1Z f^ |E g^ }E 2Z :5 '7 #5 ~E ,t aF =b ?b bF cF dF eF -t .t fF gF hF iF h^ 3Z /t i^ j^ ^v 4v @b [b jF kF k^ l^ m^ n^ o^ p^ q^ r^ s^ t^ u^ v^ lF mF w^ x^ y^ z^ A^ B^ C^ D^ E^ F^ G^ H^ I^ nF J^ oF K^ L^ M^ N^ pF O^ qF rF sF tF P^ Q^ uF R^ S^ T^ U^ V^ W^ vF X^ wF Y^ Z^ 0^ 1^ 2^ 3^ xF 4^ 5^ 6^ 7^ 8^ 9^ !^ #^ $^ %^ '^ (^ )^ yF *^ +^ ,^ -^ zF .^ AF BF 4Z /^ :^ ;^ =^ ?^ CF DF @^ [^ ]^ ^^ _^ `^ {^ |^ }^ ~^ a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ EF FF q_ r_ s_ GF t_ u_ v_ w_ x_ HF y_ z_ A_ ]b IF JF B_ C_ D_ E_ F_ G_ H_ I_ J_ K_ L_ M_ N_ O_ P_ Q_ R_ S_ T_ U_ V_ W_ X_ Y_ KF Z_ 0_ 1_ LF MF NF ^b _b OF 2_ 3_ PF 4_ 5_ 6_ 7_ QF 8_ 9_ RF !_ #_ _v 's `b {b SF TF UF :t VF WF $_ ;t `v {v %_ '_ (_ )_ XF YF *_ 5Z +_ ,_ -_ ZF 0F ._ /_ 1F =t 2F :_ 3F 4F ;_ =_ ?_ @_ [_ ]_ ^_ 5F 6Z 6F C Z D E F G H 0 7F 7Z 8F ?t 9F 8Z !F __ #F `_ $F 9Z {_ |_ }_ ~_ a` b` c` d` e` f` g` h` i` j` k` l` m` n` o` p` q` r` s` t` u` v` w` x` y` z` A` B` C` D` E` F` G` H` I` J` K` L` M` N` O` P` %F Q` !Z |b R` 'F S` T` }b #Z U` (F V` W` X` Y` Z` 0` 1` $Z )F 2` 3` *F %Z +F 'Z 4` 5` (v l m n o ,F (Z @t -F )Z .F *Z jb kb lb I J mb nb /F +Z 6` :F ;F =F 7` ,Z ?F @F 8` 9` !` #` $` %` -Z '` (` )` *` +` ,` -` .` /` :` ;` =` ?` @` [` ]` ^` _` `` {` |` }` ~` a{ b{ c{ d{ e{ f{ g{ h{ i{ j{ k{ l{ m{ n{ o{ p{ q{ r{ s{ t{ u{ v{ w{ x{ y{ z{ A{ B{ C{ D{ E{ F{ G{ H{ I{ J{ K{ L{ M{ N{ O{ P{ Q{ R{ S{ T{ U{ V{ W{ X{ Y{ Z{ .Z [F ]F ^F 0{ 1{ 2{ 3{ 4{ 5{ 6{ 7{ 8{ 9{ !{ #{ ${ %{ '{ ({ ){ *{ +{ ,{ -{ .{ /{ :{ ;{ ={ ?{ @{ [{ ]{ ^{ _{ _F `F ~b ac 1 bc cc 2 dc ec fc {F [t |F }F ]t ~F ^t _t `{ {{ |{ aG }{ bG ~{ a| b| c| d| e| f| g| h| i| j| k| l| m| n| o| p| q| r| s| t| u| cG dG v| w| x| y| z| A| B| C| D| E| eG F| G| H| I| J| K| L| M| N| O| P| Q| R| S| T| U| V| W| X| Y| Z| fG 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| !| #| $| gG %| '| (| )| *| +| ,| -| .| /| :| ;| =| ?| @| [| ]| ^| _| hG `| {| || }| ~| a} b} c} d} e} f} g} h} i} j} k} l} m} n} o} p} q} r} s} t} u} v} iG jG w} x} y} z} A} B} C} D} E} F} G} H} I} J} K} L} M} N} O} P} Q} R} S} T} kG lG U} V} W} X} Y} Z} 0} 1} 2} 3} 4} 5} 6} 7} 8} 9} !} #} $} %} '} (} mG nG )} *} +} ,} -} .} /} :} ;} =} ?} @} [} ]} ^} _} `} {} |} }} ~} a~ oG pG b~ c~ d~ e~ f~ g~ h~ i~ j~ k~ l~ m~ n~ o~ p~ q~ r~ s~ t~ u~ v~ w~ qG rG x~ y~ z~ A~ B~ C~ D~ E~ F~ G~ H~ I~ J~ K~ L~ M~ N~ O~ P~ Q~ R~ S~ sG tG T~ U~ V~ W~ X~ Y~ Z~ 0~ 1~ 2~ 3~ 4~ 5~ 6~ 7~ 8~ 9~ !~ #~ $~ %~ '~ uG vG (~ )~ *~ +~ ,~ -~ .~ /~ :~ ;~ =~ ?~ @~ [~ ]~ ^~ _~ `~ {~ |~ }~ ~~ wG xG aabbabcabdabeabfabgabhabiabjabkablabmabnaboabpabqabrabsabtabuabvabyG zG wabxabyabzabAabBabCabDabEabFabGabHabIabJabKabLabMabNabOabPabQabRabAG BG SabTabUabVabWabXabYabZab0ab1ab2ab3ab4ab5ab6ab7ab8ab9ab!ab#ab$ab%abCG DG 'ab(ab)ab*ab+ab,ab-ab.ab/ab:ab;ab=ab?ab@ab[ab]ab^ab_ab`ab{ab|ab}abEG FG ~ababbbbbcbbdbbebbfbbgbbhbbibbjbbkbblbbmbbnbbobbpbbqbbrbbsbbtbbubbGG HG vbbwbbxbbybbzbbAbbBbbCbbDbbEbbFbbGbbHbbIbbJbbKbbLbbMbbNbbObbPbbQbbIG JG RbbSbbTbbUbbVbbWbbXbbYbbZbb0bb1bb2bb3bb4bb5bb6bb7bb8bb9bb!bb#bb$bbKG LG %bb'bb(bb)bb*bb+bb,bb-bbMG NG .bb/bb:bb;bb=bb?bb@bb[bb]bb^bb_bb`bb{bb|bb}bb~bbOG PG acbbcbccbdcbecbfcbgcbhcbicbjcbkcblcbmcbncbocbpcbqcbrcbscbtcbucbvcbQG RG wcbxcbycbzcbAcbBcbCcbDcbEcbFcbGcbHcbIcbJcbKcbLcbMcbNcbOcbPcbQcbRcbSG TG ScbTcbUcbVcbWcbXcbYcbZcb0cb1cb2cb3cb4cb5cb6cb7cb8cb9cb!cb#cb$cb%cbUG VG 'cb(cb)cb*cb+cb,cb-cb.cb/cb:cbWG ;cbXG /Z =cb?cbYG @cb[cb]cb^cb_cbZG 0G `t 1G :Z gc hc ic jc kc lc mc `cb{cb|cb}cb~cbadbbdbcdbddbedbfdbgdb2G 3G ;Z hdbidbjdbkdbldbmdbndbodbpdbqdbrdbsdbtdbudbvdbwdbxdbydbzdbAdbBdbCdb4G 5G DdbEdb6G Fdb7G 8G GdbHdbIdbJdb9G !G {t #G nc $G Kdb%G LdbMdboc pc qc rc ob | sc pb tc qb 'G uc vc (G |t rb K )G }t ~t Ndb*G au Odb+G =Z ,G -G ?Z .G /G @Z :G ;G [Z =G ?G ]Z @G [G ^Z ]G ^G _Z _G `G `Z Pdb{G |G {Z Qdb}G |Z Rdb~G }Z SdbTdbUdbaH ~Z bH VdbWdbcH a0 XdbdH YdbeH b0 ZdbfH gH c0 0dbhH iH d0 1dbjH kH e0 2dblH mH f0 3dbnH oH g0 4dbpH qH h0 5dbrH sH 6db7db8db9db!db#dbtH uH i0 $db%dbvH wH j0 'db(dbk0 )db*dbxH yH bu zH l0 AH +dbBH ,db-db.db/db:db;dbm0 =dbCH DH ?db@db[db]db^db_db`dbEH n0 FH {dbGH o0 HH p0 |dbIH JH q0 }dbKH LH r0 ~dbMH NH OH PH QH aebRH SH bebcebdebeebTH febUH gebVH hebiebjebkeblebWH XH mebneboebYH pebqebrebZH sebteb0H uebvebwebxebyebzebAebBebCebDebEebFebGebHebIebJebKebLeb1H Meb2H NebOebPebQebs0 Reb3H SebTeb4H UebVebWeb5H 6H 7H 8H Xeb9H Yeb!H Zeb0eb1eb#H 2eb$H 3eb4eb5eb6eb7eb%H 8eb9eb'H cu wc (H t0 !eb5v #eb)H u0 $eb*H v0 +H %eb'eb(ebw0 ,H -H x0 .H /H y0 )eb:H z0 ;H =H *eb+eb?H @H [H ]H ^H ,eb-eb_H `H {H |H A0 }H ~H aI bI OW cI dI |v (s }v )s ~v .s .eb/eb:eb;eb=eb?eb@eb[eb]eb^eb_ebB0 `eb{eb|eb}eb~ebafbbfbcfbdfbefbeI ffbfI gI gfbhfbifbC0 jfbkfblfbmfbnfbofbpfbhI qfbrfbsfbD0 tfbiI jI ufbvfbE0 kI lI wfbF0 mI nI xfbyfboI pI qI rI zfbG0 H0 I0 J0 sI tI AfbBfbCfbDfbuI vI K0 wI EfbFfbGfbHfbIfbJfbxI L0 du yI KfbLfbMfbzI AI M0 N0 BI CI NfbOfbPfbQfbRfbSfbTfbUfbO0 P0 DI EI VfbWfbXfbYfbZfb0fb1fb2fbQ0 R0 S0 FI GI HI 3fb4fb5fb6fb7fb8fbII JI KI T0 LI 9fb!fb#fbMI U0 NI OI $fb%fb'fb(fbV0 PI QI )fb*fbW0 RI +fb,fb-fbSI X0 TI UI .fbY0 VI WI XI Z0 YI ZI 00 /fb:fbf qd xc 0I 6v 1I 7v 2I 8v 3I 4I ;fb=fb?fb@fb5I 6I 10 20 7I 8I [fb]fb^fb_fb`fb{fb30 40 9I |fb!I }fb#I $I ~fbagb50 60 %I bgbcgbdgb_c egbfgbggbhgb`c igb'I (I )I *I jgbkgb+I ,I lgbmgb-I ngb.I eu /I fu :I ;I =I gu hu iu ?I ju @I ku 70 [I lu ]I ^I _I `I {I |I }I mu 80 ~I aJ bJ nu cJ 90 dJ eJ ou fJ ogbpgbgJ qgbhJ rgbiJ sgbtgbjJ ugbvgbkJ wgb!0 #0 $0 lJ xgbygbzgbAgbmJ nJ BgbCgbDgbEgboJ pJ FgbGgbHgbIgbqJ rJ JgbKgbLgbMgbsJ tJ NgbOgbPgbQgbuJ vJ RgbSgbTgbUgbwJ %0 '0 (0 )0 *0 +0 VgbxJ yJ WgbzJ AJ ,0 -0 XgbYgbZgb0gbBJ CJ DJ 1gb.0 pu yc 2gb3gbEJ FJ 4gbGJ 5gb6gb7gb8gbHJ IJ 9gb!gb#gb$gbJJ KJ %gb'gb(gbLJ MJ NJ zc OJ )gbPJ QJ *gbRJ /0 :0 SJ TJ +gb,gb-gb.gb/gb:gbUJ VJ ;gb=gb?gb@gb[gb]gb;0 =0 ?0 WJ XJ YJ qu ZJ @0 0J ru ,v 1J 2J 3J su tu [0 ]0 4J 5J 6J 7J ^0 8J uu 9J vu !J #J $J %J _0 `0 'J {0 (J ^gb|0 )J *J +J }0 ,J _gbwu -J .J /J ~0 :J ;J a1 =J ?J b1 @J [J `gbc1 d1 ]J ^J _J `J {gbe1 {J |J }J ~J |gb}gb~gbahbf1 g1 aK bK bhbchbdhbehbcK dK h1 i1 eK fK fhbghbhhbihbjhbkhbgK hK j1 k1 iK jK lhbkK lK mhbl1 m1 mK nK nhbohboK pK phbqhbn1 o1 qK rK rhbsK tK shbp1 q1 uK r1 vK thbwK xu xK yu uhbyK s1 zK zu vhb$5 whbAu AK Bu Cu BK t1 CK Du DK u1 EK Eu FK v1 Fu GK HK Gu Hu IK w1 JK KK xhbx1 LK MK yhby1 NK OK zhbz1 A1 B1 PK QK Iu RK C1 AhbSK TK UK BhbJu ChbVK Ku WK XK D1 YK E1 ZK F1 0K 1K Dhb2K EhbG1 H1 I1 3K 4K 5K 6K FhbGhbJ1 K1 L1 M1 7K 8K 9K !K #K $K %K 'K HhbIhbJhbKhbLhbMhbNhbOhbN1 O1 (K )K *K +K PhbQhbRhbShbThbUhbP1 Q1 ,K -K .K /K VhbWhbXhbYhbZhb0hb1hb2hbR1 S1 :K ;K =K ?K 3hb4hb5hb6hb7hb8hb9hb!hbT1 U1 @K [K ]K ^K #hb$hb%hb'hbV1 Lu _K `K (hb)hb{K *hb+hb,hbW1 |K -hb}K X1 ~K aL Y1 bL .hbcL Z1 dL /hbeL fL gL 01 hL iL 11 21 jL kL :hb31 41 lL mL ;hb=hb?hb@hb[hb]hb51 61 nL oL ^hb_hb`hb{hb|hb}hb71 81 pL qL ~hbaibbibcib91 !1 rL sL dibeibfibgib#1 $1 tL uL hibiibjibkib%1 '1 vL wL xL yL libmibniboib(1 )1 zL AL pibqibribsib*1 +1 BL CL DL tibuibvibMu ,1 wibxibEL FL yibzib-1 .1 AibGL BibCibHL IL DibEibJL KL /1 :1 FibGibLL ML NL OL ;1 =1 PL QL ?1 @1 HibIibRL SL JibKib[1 ]1 LibTL MibUL ^1 _1 `1 NibOibVL WL XL YL PibQibRibSib{1 |1 TibUibZL 0L 1L 2L VibWib}1 ~1 3L 4L XibYibZib0iba2 b2 1ib2ib3ib4ib5L 6L 5ib6ib7ib8ibc2 d2 7L 8L 9ib!ibe2 f2 9L !L #ib#L $ib%ib'ib(ib)ib*ibg2 h2 +ib,ib$L %L -ib.ib/ib'L :ib;ib(L =ibi2 j2 )L *L +L ,L ?ib@ib[ib]ib^ib_ibk2 l2 `ib{ib|ib}ib~ibajb-L .L bjbcjb/L :L ;L Nu =L Ou ?L @L [L ]L ^L djbejbm2 n2 _L `L Pu {L Qu |L Ru }L ~L aM o2 bM p2 cM dM q2 eM fjbfM r2 s2 gM hM t2 iM jM kM lM u2 v2 Su mM Tu nM w2 x2 oM pM y2 Uu qM rM z2 A2 sM tM gjbhjbuM vM B2 C2 ijbjjbwM xM D2 E2 kjbljbmjbnjbojbpjbqjbrjbyM zM sjbtjbujbvjbwjbxjbF2 G2 yjbzjbAjbBjbCjbDjbAM BM CM EjbFjbDM GjbHjbH2 I2 IjbJjbKjbLjbMjbNjbOjbPjbQjbRjbSjbTjbUjbVjbWjbXjbEM FM YjbZjb0jb1jb2jb3jbJ2 K2 4jb5jb6jb7jb8jb9jb!jb#jb$jb%jb'jb(jb)jb*jbGM HM +jb,jbL2 M2 IM JM -jb.jbKM LM /jb:jbN2 O2 MM NM ;jb=jb?jb@jb[jb]jbOM PM ^jb_jbQM P2 RM SM Q2 TM R2 `jb{jbUM VM Vu WM Wu XM S2 YM |jbZM Xu 0M 1M Yu 2M 3M 4M 5M 6M }jb= ~jb? T2 @ U2 [ akb% bkb' V2 ( W2 ) X2 ckb@c dkbY2 ekbfkbgkbhkbikbjkb7M 8M Z2 kkb9M lkbmkb!M 02 nkbokb#M $M pkb%M 'M (M 12 PW )M Ac *M 22 +M ,M -M .M 32 /M qkb:M ;M rkbsb =M ?M skbtkb@M [M ukb]M ^M vkbwkbxkbykbzkbAkbBkbZu _M `M {M |M }M CkbDkbEkbFkbGkbHkbIkbJkbKkbLkb~M aN bN cN Bc 42 dN eN 3 0u fN gN hN Mkb52 NkbiN 62 jN kN OkbPkblN mN QkbRkbnN SkboN pN qN rN sN tN Tkb1u Cc uN UkbVkbvN Dc Ec Fc WkbXkbYkbZkb0kb1kbwN 2kbxN 2u yN zN 3u 4u AN -v 5u 6u 7u 8u BN CN 3kbDN 72 9u 4kb5kb6kb7kb8kb9kb!kb#kb$kb%kb'kb(kb)kb*kb+kb,kb-kb.kb/kb:kbEN FN GN ;kbaw HN IN =kb?kb@kb[kb]kbJN ^kb_kbGc Hc 82 `kbKN LN MN 92 ;5 (7 %5 NN !u ON Ic Jc PN QN RN SN #u $u TN UN VN WN XN !2 %u YN {kbbw 9v Kc Lc ZN 0N |kb}kb~kbalbblb1N clbdlbelbflbglbhlb2N 3N ilbjlbklbllbmlb4N nlbolbplbqlbrlbslb5N 6N tlb7N ulbvlbwlbxlb8N 9N !N #N $N %N 'N ylb(N )N zlbAlbBlbClbDlb*N Elb+N FlbGlbHlb,N IlbJlb-N KlbLlbMlbNlbOlbPlbQlbRlbSlbTlbUlbVlbWlb.N XlbYlbZlb0lb/N :N ;N =N #2 1lb2lb3lb4lb?N @N [N 5lb6lb7lb8lb9lb!lb#lb$lb%lb'lb(lb)lb*lb+lb,lb-lb.lb/lb:lb;lb=lb?lb@lb[lb]lb^lb]N ^N _N _lb`lb`N {N {lb|lb}lb~lb|N ambbmbcmbMc }N ~N dmbembaO fmbgmbhmbimbjmbkmblmbmmbnmbombpmbqmbrmbsmbtmbumbvmbwmbxmbymbzmbbO AmbBmbCmbcO dO eO Nc Oc fO DmbEmbgO FmbGmbHmbhO iO ImbJmbjO KmbkO cw *s Pc Qc lO mO nO 'u oO pO qO $2 dw ew Lmbfw MmbrO sO tO Nmb%2 OmbPmbQmbuO vO RmbwO xO (u yO zO AO BO SmbCO DO TmbUmbVmbWmbEO )u FO L 4 M N O P Q 5 GO *u HO +u IO ,u JO XmbKO LO MO '2 YmbZmb0mb1mb2mb3mb4mb5mb6mb7mb8mb9mb!mb#mb$mb%mb'mb(mb)mb*mb+mb,mb-mb.mb/mb:mb;mb=mb?mb@mb[mb]mb^mb_mb`mb{mb|mb}mb~mbanbbnbcnbdnbenbfnbgnbNO OO (2 Rc hnbPO inbQO Sc )2 jnbRO knblnbmnbnnbonbpnbqnb*2 SO TO UO VO +2 WO ,2 XO rnb)v p q r s YO -2 -u ZO .u 0O .2 tb ub vb R S wb xb 1O /u 2O 3O 4O 5O 6O :u 7O 8O 9O snbtnbunbvnbwnb/2 xnbynbznbAnbBnbCnbDnbEnbFnbGnbHnbInbJnbKnbLnbMnbNnbOnbPnbQnbRnbSnbTnbUnbVnbWnbXnbYnbZnb0nb1nb2nb3nb4nb5nb6nb7nb8nb9nb!nb#nb$nb%nb'nb(nb)nb*nb+nb,nb-nb.nb/nb:nb;nb=nb?nb@nb[nb]nb^nb_nb`nb{nb|nb}nb~nbaobbobcobdobeobfobgobhobiob:2 !O #O $O jobkoblobmobnoboobpobqobrobsobtobuobvobwobxobyobzobAobBobCobDobEobFobGobHobIobJobKobLobMob%O Nob'O (O Tc Uc 6 Vc Wc 7 Xc Yc Zc )O ;u *O +O =u ,O ?u @u Oob-O Pob.O Qob/O RobSobTobUobVobWobXobYobZob0ob1ob2ob3ob4ob5ob6ob7ob8ob9ob!ob:O #ob;O =O $ob%ob'ob(ob)ob*ob+ob,ob-ob.ob?O /ob:ob;ob=ob?ob@ob[ob]ob^ob_ob`ob{ob|ob}ob~obapbbpbcpbdpbepb@O [O fpbgpbhpbipbjpbkpblpbmpbnpbopbppbqpbrpb]O spbtpbupbvpbwpbxpbypbzpbApbBpbCpbDpbEpbFpbGpbHpbIpb^O Jpb_O KpbLpbMpbNpbOpbPpbQpbRpbSpbTpbUpbVpbWpbXpbYpbZpb0pb1pb2pb3pb4pb5pb6pb7pb8pb`O 9pb{O |O !pb#pb$pb%pb'pb(pb)pb*pb+pb,pb-pb.pb/pb:pb;pb=pb?pb@pb[pb]pb^pb_pb`pb}O ~O aP {pb|pb}pb~pbaqbbqbcqbdqbeqbfqbgqbhqbiqbjqbkqblqbmqbnqboqbpqbqqbbP cP dP rqbsqbtqbuqbvqbwqbxqbeP yqbzqbAqbBqbCqbDqbEqbFqbGqbHqbIqbJqbKqbLqbfP gP MqbNqbOqbPqbQqbRqbhP SqbTqbUqbVqbWqbXqbYqbZqb0qb1qb2qb3qb4qb5qb6qbiP jP 7qb8qb9qb!qb#qb$qbkP lP %qb'qb(qb)qb*qb+qb,qb-qb.qb/qb:qb;qb=qb?qbmP @qb[qb]qb^qb_qb`qb{qbnP |qb}qb~qbarbbrbcrbdrberbfrbgrbhrbirbjrbkrblrboP pP mrbnrborbprbqrbrrbsrbtrburbvrbwrbxrbyrbzrbArbBrbCrbDrbErbFrbGrbqP rP sP HrbIrbJrbKrbLrbMrbNrbOrbPrbQrbRrbSrbTrbUrbVrbWrbXrbYrbZrb0rb1rbtP uP vP 2rb3rb4rb5rb6rb7rb8rb9rb!rb#rb$rb%rb'rb(rb)rb*rb+rb,rb-rb.rb/rbwP xP yP :rb;rb=rb?rb@rb[rb]rb^rb_rb`rb{rb|rb}rb~rbasbbsbcsbdsbesbfsbgsbzP AP BP hsbisbjsbksblsbmsbnsbosbpsbqsbrsbssbtsbusbvsbwsbxsbysbzsbAsbBsbCP DP EP CsbDsbEsbFsbGsbHsbIsbJsbKsbLsbMsbNsbOsbPsbQsbRsbSsbTsbUsbVsbWsbFP GP HP XsbYsbZsb0sb1sb2sb3sb4sb5sb6sb7sb8sb9sb!sb#sb$sb%sb'sb(sb)sbIP *sbJP KP +sb,sb-sb.sb/sb:sb;sb=sb?sb@sb[sb]sb^sb_sb`sb{sb|sb}sb~sbatbLP btbMP NP ctbdtbetbftbgtbhtbitbOP PP QP jtbktbltbmtbntbotbptbqtbrtbstbttbutbvtbwtbxtbRP SP TP ytbztbAtbBtbCtbDtbEtbFtbGtbHtbItbJtbKtbLtbMtbNtbOtbPtbQtbRtbStbUP VP WP TtbUtbVtbWtbXtbYtbZtb0tb1tb2tb3tb4tb5tb6tb7tb8tb9tb!tb#tb$tb%tbXP YP ZP 'tb(tb)tb*tb+tb,tb-tb.tb/tb:tb;tb=tb?tb@tb[tb]tb^tb_tb`tb{tb|tb0P 1P 2P }tb~tbaubbubcubdubeubfub3P gub4P hub5P ;2 6P iub7P jubkublubmubnub8P 9P [u !P ]u 0c 1c 2c 3c 4c 5c 6c oubpubqubrubsubtubuubvubwubxubyubzub#P $P =2 AubBubCubDubEubFubGubHubIubJubKubLub%P MubNubOubPubQubRubSubTubUub'P (P )P *P +P Vub,P -P .P WubXubYub/P :P ^u ;P 7c =P ?P @P Zub0ub8c 9c !c #c yb } $c zb %c Ab [P 'c (c ]P _u Bb T ^P `u ?2 _P `P {u 1ub{P @2 |P }P [2 ~P aQ |u bQ cQ ]2 dQ eQ }u fQ gQ ~u hQ iQ av jQ kQ ^2 lQ mQ nQ bv oQ pQ cv qQ rQ _2 sQ tQ 2ubuQ `2 vQ wQ 3ubxQ {2 yQ zQ 4ubAQ |2 BQ CQ DQ }2 EQ FQ GQ ~2 HQ IQ JQ a3 KQ LQ MQ b3 NQ OQ PQ dv 5ubQQ RQ c3 SQ TQ UQ 6ub7ub8ub9ub!ub#ubVQ WQ d3 $ubXQ YQ ZQ e3 0Q %ubf3 'ub1Q 2Q 3Q ev 4Q g3 5Q 6Q 7Q (ub)ub*ub+ub,ub-ubh3 8Q 9Q !Q .ub/ub:ub;ub=ub?ub@ub#Q fv $Q [ub%Q gv 'Q i3 (Q )Q *Q j3 +Q ,Q -Q k3 .Q /Q :Q ;Q =Q ?Q @Q [Q ]Q ^Q ]ub^ub_ub_Q `ub`Q {ub{Q |ub}ub~ubavb|Q }Q ~Q bvbaR cvbbR dvbcR evbdR fvbgvbeR fR hvbivbjvbkvblvbmvbnvbovbpvbqvbrvbsvbtvbuvbvvbwvbxvbgR hR iR yvbzvbAvbBvbl3 CvbjR DvbEvbkR FvbGvbHvblR mR nR IvbJvboR KvbpR LvbMvbNvbqR OvbrR PvbQvbRvbSvbTvbsR UvbVvbtR hv )c uR m3 Wvb!v XvbvR n3 YvbwR o3 Zvb0vb1vb2vbp3 3vbxR q3 yR 4vbr3 5vbzR s3 6vbAR 7vb8vbBR CR DR ER FR 9vb!vbGR #vbHR $vbt3 IR JR KR LR QW %vbMR gw kw hw lw iw RW 'vb(vb)vb*vb+vb,vb-vb.vb/vb:vb;vbu3 =vb?vb@vb[vb]vb^vb_vb`vb{vb|vbNR }vb~vbOR awbbwbcwbv3 dwbewbfwbgwbhwbiwbjwbkwblwbmwbnwbw3 owbPR pwbqwbrwbx3 QR swbtwby3 RR uwbvwbwwbxwbSR TR ywbzwbz3 A3 B3 C3 UR VR AwbBwbCwbDwbEwbFwbD3 WR GwbHwbIwbJwbKwbLwbMwbE3 F3 NwbOwbPwbQwbXR YR G3 H3 ZR 0R RwbSwbTwbUwbVwbWwbXwbYwbI3 J3 1R 2R Zwb0wb1wb2wb3wb4wb5wb6wbK3 L3 M3 3R 4R 5R 7wb8wb9wb!wb#wb$wb%wb'wb(wbN3 6R )wb*wb+wb,wbO3 7R -wb.wb/wb:wb;wbP3 8R =wb?wb@wbQ3 9R [wb]wb^wb_wbR3 !R `wb{wbS3 #R |wb$R T3 }wb%R U3 ~wbaxbg rd *c bxb#v cxb$v dxb%v 'R (R exbfxbgxbhxbixbjxbV3 W3 )R *R kxblxbmxbnxboxbpxbX3 Y3 +R qxbrxbsxb,R txbuxbvxbZ3 03 -R wxbxxbyxb{c zxbAxbBxbCxb|c DxbExb.R Fxb/R GxbHxb:R ;R IxbJxb=R Kxb?R 13 @R 23 [R ]R ^R 33 43 53 _R 63 `R 73 83 {R 93 |R }R ~R aS bS cS dS !3 #3 LxbeS fS $3 Mxb%3 gS hS iv iS NxbOxbPxbQxbjS RxbSxbTxbUxbkS VxbWxbXxbYxb'3 (3 )3 lS Zxb0xb1xb2xb3xbmS 4xb5xb6xb7xb8xbnS 9xb!xb#xb$xb%xboS 'xbpS (xb)xb*xbqS +xb,xb-xb.xb/xbrS :xb;xb=xb?xb@xb*3 +3 ,3 -3 .3 /3 [xbsS ]xb^xbtS _xb:3 jv `xb{xb|xb}xbuS vS ~xbayb;3 =3 +c bybcybwS xS dybeybfybgybhybiybyS zS jybkyblybmybAS BS nyboybpybqybCS DS ,c ES rybsybFS tybuyb?3 @3 vybwybxybyybzybAybBybCybGS HS DybEybFybGybHybIyb[3 ]3 ^3 IS JybJS _3 KS `3 LS {3 +5 MS NS OS |3 }3 ~3 a4 PS QS RS Kybb4 SS c4 TS d4 US LybVS Mybe4 f4 Nybg4 WS Oybh4 XS PybQybi4 YS Rybj4 ZS Syb0S k4 1S Tybl4 Uyb2S m4 Vyb3S Wybn4 o4 4S XybYyb5S Zybp4 6S 7S 0yb1yb2yb3yb4yb5ybq4 r4 8S 9S 6yb7yb8yb9yb!yb#ybs4 t4 !S #S $yb%yb'yb(yb)yb*yb+yb,ybu4 v4 $S -yb.yb%S /yb:ybw4 x4 'S ;yb=yb?yb(S @yb[yb]yby4 z4 )S ^yb_yb*S `yb{ybA4 B4 |ybC4 +S }yb,S D4 -S E4 ~yb.S F4 /S G4 azb'5 bzbH4 :S 85 kv ;S I4 =S J4 ?S K4 @S L4 [S M4 N4 ]S ^S O4 P4 _S Q4 `S czbdzbR4 {S ezbfzbS4 |S }S gzbT4 U4 V4 ~S aT W4 bT X4 hzbcT izbdT jzbY4 kzbeT Z4 lzbfT 04 gT 14 hT 24 mzbiT nzbozbpzb34 44 54 jT qzbkT rzbszbtzb64 74 84 94 lT uzbmT vzbnT wzboT xzbyzbzzbAzbBzbCzbDzbEzbFzb!4 #4 GzbpT HzbqT IzbJzbKzbLzbMzbNzb$4 %4 rT OzbsT PzbQzbRzbSzbTzbUzbVzbWzbXzb'4 (4 tT YzbuT Zzb0zb1zb2zb3zb4zb5zb6zb7zb)4 *4 vT wT 8zb9zb!zb#zb$zb%zb+4 ,4 xT yT 'zb(zbzT )zb*zb+zb-4 AT ,zbBT .4 CT DT /4 ET -zbFT :4 .zbGT HT IT JT ;4 KT LT =4 ?4 MT NT /zb@4 lv OT PT :zb;zb=zb?zbQT @zb[4 ]4 RT ST [zb]zb^zb_zb`zb{zb^4 _4 TT UT VT WT |zb}zb`4 {4 XT YT ZT 0T 1T 2T |4 }4 3T 4T 5T 6T 7T 8T ~4 a5 9T !T #T $T ~zb%T aAbbAbb5 c5 'T (T cAbdAbeAbfAbd5 e5 )T *T gAbhAbiAbjAbf5 mv kAblAb+T ,T -T .T g5 h5 mAb/T :T ;T =T ?T @T nAb[T ]T i5 j5 ^T _T `T {T |T }T nv ov ~T aU pv k5 oAbbU cU dU pAbeU qv l5 qAbfU gU hU m5 n5 o5 iU jU kU lU mU nU rAbsAbtAbuAbp5 q5 vAbwAboU pU xAbyAbqU rU rv sv sU tU uU vU zAbAAbr5 s5 wU xU yU zU AU BU BAbCAbCU DU t5 u5 EU FU GU HU v5 w5 IU JU DAbEAbKU LU MU NU FAbGAbx5 y5 HAbOU PU QU IAbJAbRU KAbSU TU LAbMAbz5 A5 UU VU NAbOAbWU XU YU ZU PAbQAbB5 C5 0U RAbSAbTAbUAbVAb1U 2U WAb3U 4U 5U 6U tv 7U uv 8U 9U !U #U $U %U 'U D5 E5 (U )U vv *U wv +U xv ,U -U .U yv /U zv :U ;U Av =U ?U @U F5 Bv [U ]U Cv ^U _U `U {U G5 Dv Ev |U Fv }U Gv Hv ~U aV Iv Jv bV cV Kv Lv dV eV fV gV hV iV H5 I5 jV kV lV mV J5 Mv nV XAbYAbZAb0Ab1Ab2Ab3AboV pV qV 4Ab5AbrV sV 6AbK5 L5 7Ab8Ab9Ab!Ab#Ab$AbtV uV %Ab'Ab(AbvV wV )AbM5 Nv *Ab+Ab,Ab-Ab.Ab/AbxV :Ab;Ab=Ab?Ab@Ab[Ab]Ab^Ab_AbyV zV AV BV CV DV `Ab{AbN5 O5 |Ab}Ab~AbaBbbBbcBbdBbeBbfBbgBbhBbiBbjBbkBblBbmBbnBboBbP5 Q5 EV FV pBbqBbGV HV rBbIV R5 S5 JV KV LV sBbtBbuBbvBbwBbxBbMV NV OV PV Ov QV RV Pv SV T5 yBbTV UV VV Qv WV Rv XV U5 YV ZV 0V Sv 1V 2V Tv 3V 4V 5V 6V 7V zBb] ABb^ V5 _ W5 ` BBb* CBb+ X5 , Y5 - Z5 DBb[c EBb05 FBbGBbHBbIBbJBb8V 9V !V Uv KBbLBbMBb#V $V 15 NBbOBb%V 'V (V )V *V +V Vv ,s ,V -c -V 25 .V /V :V ;V 35 =V ?V @V [V PBbCb ]V ^V QBbRBb_V `V {V |V }V SBbTBb~V UBbVBbWBbXBbWv aW bW cW dW eW fW gW YBbZBbhW 0Bb1BbiW 2Bb3BbjW kW lW mW .c 45 nW oW 8 Xv pW qW 4BbrW 55 sW tW 65 uW vW 5Bb6BbwW xW yW 7BbzW AW BW CW DW EW FW GW HW Yv /c IW JW 8BbKW :c ;c =c 9BbLW !Bb#Bb$Bb%BbMW 'Bb

1159 scope["root_path"] = self.root_path 3:v $s ?v jw @v %s [v -s ,Bb.5 _v 's |v (s }v )s ~v .s cw *s gw kw hw lw iw RW

1160 await super().__call__(scope, receive, send) 3mw SW nw g$ TW UW ow *v /s :s ;s =s pw h$ qw i$ VW ?s j$ k$ l$ m$ n$ o$ p$ q$ r$ s$ t$ u$ v$ w$ x$ y$ z$ A$ B$ C$ rw D$ sw E$ .v tw uw F$ G$ H$ I$ J$ K$ L$ M$ Db Eb WW N$ vw O$ ww XW /5 %7 95 xw @s yw Fb Gb zw Aw Bw Cw [s ]s Dw Ew Fw Gw P$ YW ^s Q$ R$ /v Zv Hb Ib Hw Iw S$ T$ U$ V$ W$ X$ Y$ Z$ 0$ 1$ 2$ 3$ Jw Kw 4$ 5$ 6$ 7$ 8$ 9$ !$ #$ $$ %$ '$ ($ Lw )$ *$ Mw +$ ,$ -$ .$ Nw /$ Ow Pw Qw Rw :$ ;$ Sw =$ ?$ @$ [$ ]$ ^$ Tw _$ Uw `$ {$ |$ }$ ~$ a% Vw b% c% d% e% f% g% h% i% j% k% l% m% n% Ww o% p% q% r% Xw s% Yw Zw ZW t% u% v% w% x% 0w 1w y% z% A% B% C% D% E% F% G% H% I% J% K% L% M% N% O% P% Q% R% S% T% U% V% W% X% 2w 3w Y% Z% 0% 4w 1% 2% 3% 4% 5% 5w 6% 7% 8% Jb 6w 7w 9% !% #% $% %% '% (% )% *% +% ,% -% .% /% :% ;% =% ?% @% [% ]% ^% _% `% 8w {% |% }% 9w !w #w Kb Lb $w ~% a' b' c' d' e' %w 'w f' g' (w h' i' :v $s Mb Nb )w j' *w _s +w ,w k' 0W ;v =v l' m' n' o' -w .w p' 1W q' r' s' /w :w t' u' ;w `s =w v' ?w @w w' x' y' z' A' B' C' [w 2W ]w t U u v w x y V ^w 3W _w {s `w 4W {w D' |w E' }w 5W F' G' H' I' J' K' L' M' N' O' P' Q' R' S' T' U' V' W' X' Y' Z' 0' 1' 2' 3' 4' 5' 6' 7' 8' 9' !' #' $' %' '' (' )' *' +' ,' -' ~w .' /' :' ax ;' 6W Ob =' bx ?' @' Pb 7W [' cx ]' ^' _' `' {' |' dx 8W ex }' ~' fx |s gx }s a( hx 'v h i j k ix 9W ~s jx at kx !W ~ ab bb z A cb db lx bt mx nx ox px qx ct rx sx tx b( c( d( e( f( #W g( h( i( j( k( l( m( n( o( p( q( r( s( t( u( v( w( x( y( z( A( B( C( D( E( F( G( H( I( J( K( L( M( N( O( P( Q( R( S( T( U( V( W( X( Y( Z( 0( 1( 2( 3( 4( 5( 6( 7( 8( 9( !( #( $( %( '( (( )( *( +( ,( -( .( /( :( ;( =( ?( @( [( $W ux vx wx ]( ^( _( `( {( |( }( ~( a) b) c) d) e) f) g) h) i) j) k) l) m) n) o) p) q) r) s) t) u) v) w) x) xx yx Qb Rb W Sb Tb X Ub Vb Wb zx %W Ax Bx dt Cx et ft y) Dx z) A) B) Ex C) D) E) F) G) H) I) J) K) L) M) N) O) P) Q) R) S) T) U) V) W) X) Fx Gx Y) Z) 0) 1) 2) 3) 4) 5) 6) 7) 8) 9) !) #) $) %) ') () )) *) +) ,) -) .) /) :) ;) =) ?) @) [) Hx Ix ]) ^) _) `) {) |) }) ~) a* b* c* d* e* Jx f* g* h* i* j* k* l* m* n* o* p* q* r* s* t* u* v* w* x* Kx y* z* A* B* C* D* E* F* G* H* I* J* K* L* M* N* O* P* Q* R* S* T* U* V* W* X* Y* Lx Mx Z* 0* 1* 2* 3* 4* 5* 6* 7* 8* 9* !* #* $* %* '* (* )* ** +* ,* -* .* /* Nx Ox :* ;* =* ?* @* [* ]* ^* _* `* {* |* }* ~* a+ b+ c+ d+ e+ f+ g+ h+ Px Qx i+ j+ k+ l+ m+ n+ o+ p+ q+ r+ s+ t+ u+ v+ w+ x+ y+ z+ A+ B+ C+ D+ Rx Sx E+ F+ G+ H+ I+ J+ K+ L+ M+ N+ O+ P+ Q+ R+ S+ T+ U+ V+ W+ X+ Y+ Z+ Tx Ux 0+ 1+ 2+ 3+ 4+ 5+ 6+ 7+ 8+ 9+ !+ #+ $+ %+ '+ (+ )+ *+ ++ ,+ -+ .+ Vx Wx /+ :+ ;+ =+ ?+ @+ [+ ]+ ^+ _+ `+ {+ |+ }+ ~+ a, b, c, d, e, f, g, Xx Yx h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, Zx 0x D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, 1x 2x Z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, !, #, $, %, ', (, ), *, +, ,, -, 3x 4x ., /, :, ;, =, ?, @, [, ], ^, _, `, {, |, }, ~, a- b- c- d- e- f- 5x 6x g- h- i- j- k- l- m- n- o- p- q- r- s- t- u- v- w- x- y- z- A- B- 7x 8x C- D- E- F- G- H- I- J- K- L- M- N- O- P- Q- R- S- T- U- V- W- X- 9x !x Y- Z- 0- 1- 2- 3- 4- 5- 6- 7- 8- 9- !- #- $- %- '- (- )- *- +- ,- #x $x -- .- /- :- ;- =- ?- @- [- ]- ^- _- `- {- |- }- ~- a. b. c. d. e. %x 'x f. g. h. i. j. k. l. (x )x m. n. o. p. q. r. s. t. u. v. w. x. y. z. A. B. C. *x +x D. E. F. G. H. I. J. K. L. M. N. O. P. Q. R. S. T. U. V. W. X. Y. ,x -x Z. 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. !. #. $. %. '. (. ). *. +. ,. -. .x /x .. /. :. ;. =. ?. @. [. ]. ^. _. `. {. |. }. ~. a/ b/ c/ d/ e/ f/ :x ;x g/ h/ i/ j/ k/ l/ m/ n/ o/ p/ =x q/ ?x 'W r/ s/ @x t/ u/ v/ w/ x/ [x ]x gt ^x ht Xb Yb Zb 0b 1b 2b 3b y/ z/ A/ B/ C/ D/ E/ F/ G/ H/ I/ J/ _x `x (W K/ L/ M/ N/ O/ P/ Q/ R/ S/ T/ U/ V/ W/ X/ Y/ Z/ 0/ 1/ 2/ 3/ 4/ 5/ {x |x 6/ }x ~x 7/ ay 8/ 9/ !/ #/ $/ %/ by it cy 4b dy '/ ey (/ )/ 5b 6b 7b 8b eb { 9b fb !b gb fy #b $b gy jt hb B hy kt )W iy jy *W ky ly +W my ny ,W oy py -W qy ry .W sy ty lt */ uy /W vy wy :W xy yy ;W +/ zy Ay =W By Cy ?W Dy Ey @W ,/ Fy -/ Gy [W ./ Hy // Iy ]W :/ Jy ;/ Ky ^W =/ Ly My _W Ny ?/ Oy `W @/ Py Qy {W [/ Ry Sy |W ]/ Ty Uy }W ^/ Vy Wy ~W _/ Xy Yy `/ {/ |/ }/ ~/ a: Zy 0y aX b: c: 1y 2y bX d: e: cX f: g: 3y 4y mt 5y dX h: 6y 7y i: j: k: l: m: n: eX o: 8y 9y p: q: r: s: t: u: v: !y fX #y $y %y gX w: hX x: 'y (y iX )y y: *y jX z: +y ,y -y .y /y :y A: ;y =y B: C: D: E: F: ?y G: @y H: I: J: K: L: [y ]y M: N: O: ^y P: Q: R: _y S: T: `y {y U: V: W: X: Y: Z: 0: 1: 2: 3: 4: 5: 6: 7: 8: 9: !: |y }y ~y #: $: %: ': kX az bz (: ): cz *: dz +: ez ,: fz gz hz iz jz kz -: lz .: mz /: nz :: oz ;: pz =: qz ?: @: rz nt %b sz ot [: 0v tz uz lX vz wz mX ]: ^: _: `: nX xz yz pt {: zz oX Az Bz qt |: Cz Dz }: Ez Fz Gz Hz Iz Jz ~: Kz a; Lz Mz pX Nz Oz Pz Qz +s Rz Sz ?v jw @v %s [v -s b; c; d; e; f; g; h; i; j; k; l; qX m; n; o; p; q; r; Tz s; t; u; Uz v; w; Vz x; y; z; rX A; B; C; D; E; F; G; H; Wz I; J; sX K; Xz L; Yz M; tX Zz 0z N; uX 1z 2z O; 3z P; 4z 5z Q; R; vX wX xX yX 6z 7z S; T; U; V; 8z 9z zX !z W; X; Y; Z; 0; 1; #z AX BX 2; 3; $z %z 'z (z CX DX )z *z 4; 5; 6; 7; 8; 9; +z ,z EX FX -z .z !; #; $; %; '; (; /z ); GX HX IX :z ;z =z *; +; ,; ?z @z -; .; /; [z JX ]z ^z :; ;; =; KX _z ?; @; [; `z ]; LX {z |z ^; _; MX }z `; {; |; ~z NX aA bA }; rt cA ~; dA OX eA fA PX gA a= e pd 'b b= 1v c= 2v d= 3v hA iA e= f= g= jA kA h= QX RX lA mA nA oA i= j= k= l= SX TX pA qA m= n= rA sA o= p= UX VX tA q= r= s= ]c t= u= v= w= ^c x= uA vA wA xA y= z= yA zA A= B= AA BA CA WX DA XX EA FA GA YX ZX 0X HA 1X IA 2X 3X JA 4X KA LA MA NA OA PA QA st 5X RA SA TA tt UA 6X VA WA ut XA C= YA D= E= ZA F= G= 0A H= 1A I= J= 2A K= 7X 8X 9X 3A L= M= N= O= 4A 5A P= Q= R= 6A S= 7A T= U= V= W= 8A 9A X= Y= Z= 0= !A #A 1= 2= 3= 4= $A %A 5= 6= 7= 8= 'A !X #X $X %X 'X (X 9= (A )A != *A +A )X *X #= ,A $= %= -A .A '= (= +X ,X (b )= *= /A :A ;A =A += ,= -= .= ?A @A /= := ;= == [A ]A ?= ^A @= [= _A `A )b {A ]= |A }A ^= ~A -X .X _= `= {= |= }= ~= a? b? aB bB cB dB c? d? e? f? /X :X ;X eB fB gB vt hB =X iB wt *5 jB kB lB ?X @X [X ]X mB nB oB pB ^X qB xt rB yt sB g? tB uB _X `X vB {X wB xB |X yB h? zB }X AB i? ~X BB CB DB aY EB FB bY GB HB cY IB JB j? dY eY KB LB MB NB k? fY OB PB QB RB l? m? n? o? gY hY SB TB p? q? r? s? t? u? zt At UB VB v? w? x? y? z? A? WB XB iY jY YB B? C? ZB D? E? kY lY 0B 1B F? G? 2B H? I? J? mY Bt 3B 4B K? 5B 6B L? nY oY 7B pY 8B M? 9B Ct !B qY N? #B Dt $B rY O? !5 %B sY 'B 75 Et (B Ft )B tY *B Gt +B Ht ,B It Jt -B .B Kt Lt /B uY :B P? ;B Mt =B ?B Q? vY @B [B ]B wY Nt xY ^B _B yY `B zY {B |B R? }B ~B AY aC bC BY S? cC Ot dC CY eC DY fC gC T? hC U? EY FY GY iC jC kC lC V? W? HY IY JY KY mC nC oC X? pC qC rC sC Y? Z? 0? 1? 2? 3? 4? 5? LY MY tC uC vC wC 6? 7? 8? 9? !? #? NY OY xC yC zC AC $? %? '? (? )? *? +? ,? PY QY BC CC DC EC -? .? /? :? ;? =? ?? @? RY SY FC GC [? ]? ^? _? `? {? TY UY HC IC JC |? }? ~? a@ KC VY LC b@ MC WY NC OC XY PC c@ QC YY RC d@ SC TC UC ZY VC e@ Pt 0Y WC XC f@ 1Y 2Y YC ZC 0C g@ h@ i@ j@ k@ 3Y 4Y 1C 2C l@ 3C m@ n@ o@ p@ 5Y 6Y 4C 5C 6C 7C q@ r@ 7Y 8Y 8C 9C !C s@ t@ #C 9Y !Y $C %C 'C (C u@ v@ #Y $Y )C *C +C ,C w@ x@ y@ z@ %Y 'Y -C .C A@ /C :C B@ (Y )Y ;C =C ?C C@ D@ @C *Y +Y [C ]C ^C _C E@ F@ ,Y -Y `C G@ H@ I@ {C |C J@ }C ~C aD .Y /Y bD cD dD eD K@ L@ :Y ;Y fD gD =Y ?Y M@ N@ hD iD O@ P@ @Y [Y Q@ jD R@ kD ]Y ^Y _Y S@ T@ U@ V@ lD mD W@ X@ Y@ Z@ `Y Qt 0@ 1@ nD oD pD 2@ 3@ 4@ {Y |Y qD rD sD tD 5@ 6@ }Y ~Y 7@ 8@ 9@ !@ uD vD #@ $@ %@ '@ Rt aZ wD xD (@ yD bZ cZ zD AD )@ BD CD *@ +@ ,@ -@ .@ dZ eZ DD /@ ED FD :@ ;@ =@ ?@ @@ [@ ]@ ^@ fZ gZ GD HD _@ `@ ID JD {@ |@ }@ ~@ hZ St a[ b[ c[ d[ KD e[ LD MD f[ g[ ND OD PD iZ QD jZ RD SD TD h[ i[ j[ k[ kZ lZ UD VD Tt WD mZ XD Ut YD ZD 0D nZ 1D Vt 2D l[ Wt 3D m[ 4D oZ pZ 5D 6D qZ 7D 8D 9D !D Xt rZ Yt #D Zt $D 0t sZ %D 'D 1t 2t (D )D 3t 4t *D +D n[ o[ ,D -D tZ uZ .D /D :D ;D vZ wZ =D ?D @D p[ q[ r[ s[ t[ [D ]D u[ v[ w[ x[ y[ z[ xZ yZ A[ B[ C[ D[ ^D E[ _D `D F[ G[ H[ I[ J[ K[ zZ AZ L[ M[ N[ O[ P[ Q[ R[ S[ T[ {D U[ V[ W[ X[ Y[ Z[ |D }D 0[ 1[ ~D aE 2[ 3[ BZ CZ 4[ 5[ 6[ 7[ 8[ 9[ ![ #[ $[ %[ '[ ([ )[ *[ +[ ,[ -[ .[ DZ EZ bE cE /[ dE eE :[ ;[ =[ FZ GZ fE gE ?[ @[ [[ ][ ^[ _[ hE iE `[ {[ jE HZ kE lE IZ mE JZ nE |[ }[ oE KZ pE 5t qE LZ rE ~[ sE 6t tE uE 7t vE wE xE yE zE a] . b] / MZ : NZ ; c] 9 d] ! OZ # PZ $ QZ e] ?c f] RZ g] h] i] j] k] l] AE BE SZ m] n] o] p] CE TZ q] r] s] DE EE t] FE GE UZ NW HE *b IE VZ JE KE LE ME WZ NE OE PE u] v] ib QE RE w] x] SE TE y] z] A] B] C] D] E] F] G] H] 8t UE VE WE XE YE I] J] K] L] ZE M] N] O] P] Q] 0E 1E 2E 3E +b 9t R] 4E Y !t 5E 6E S] T] XZ U] 7E YZ 8E 9E V] W] !E #E X] Y] $E Z] %E 'E (E 0] )E 1] *E #t ,b +E ,E 2] -E -b .b /b 3] 4] 5] 6] 7] 8] .E 9] /E -Bb.Bb:E ;E $t =E ?E ZZ %t @E +v 't (t )t *t [E ]E !] #] 0Z +t $] %] '] (] )] *] +] ,] -] .] /] :] ;] =] ?] @] [] ]] ^] _] ^E `] _E {] ]v `E |] }] ~] a^ b^ c^ {E d^ e^ :b ;b 1Z f^ |E g^ }E 2Z :5 '7 #5 ~E ,t aF =b ?b bF cF dF eF -t .t fF gF hF iF h^ 3Z /t i^ j^ ^v 4v @b [b jF kF k^ l^ m^ n^ o^ p^ q^ r^ s^ t^ u^ v^ lF mF w^ x^ y^ z^ A^ B^ C^ D^ E^ F^ G^ H^ I^ nF J^ oF K^ L^ M^ N^ pF O^ qF rF sF tF P^ Q^ uF R^ S^ T^ U^ V^ W^ vF X^ wF Y^ Z^ 0^ 1^ 2^ 3^ xF 4^ 5^ 6^ 7^ 8^ 9^ !^ #^ $^ %^ '^ (^ )^ yF *^ +^ ,^ -^ zF .^ AF BF 4Z /^ :^ ;^ =^ ?^ CF DF @^ [^ ]^ ^^ _^ `^ {^ |^ }^ ~^ a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ EF FF q_ r_ s_ GF t_ u_ v_ w_ x_ HF y_ z_ A_ ]b IF JF B_ C_ D_ E_ F_ G_ H_ I_ J_ K_ L_ M_ N_ O_ P_ Q_ R_ S_ T_ U_ V_ W_ X_ Y_ KF Z_ 0_ 1_ LF MF NF ^b _b OF 2_ 3_ PF 4_ 5_ 6_ 7_ QF 8_ 9_ RF !_ #_ _v 's `b {b SF TF UF :t VF WF $_ ;t `v {v %_ '_ (_ )_ XF YF *_ 5Z +_ ,_ -_ ZF 0F ._ /_ 1F =t 2F :_ 3F 4F ;_ =_ ?_ @_ [_ ]_ ^_ 5F 6Z 6F C Z D E F G H 0 7F 7Z 8F ?t 9F 8Z !F __ #F `_ $F 9Z {_ |_ }_ ~_ a` b` c` d` e` f` g` h` i` j` k` l` m` n` o` p` q` r` s` t` u` v` w` x` y` z` A` B` C` D` E` F` G` H` I` J` K` L` M` N` O` P` %F Q` !Z |b R` 'F S` T` }b #Z U` (F V` W` X` Y` Z` 0` 1` $Z )F 2` 3` *F %Z +F 'Z 4` 5` (v l m n o ,F (Z @t -F )Z .F *Z jb kb lb I J mb nb /F +Z 6` :F ;F =F 7` ,Z ?F @F 8` 9` !` #` $` %` -Z '` (` )` *` +` ,` -` .` /` :` ;` =` ?` @` [` ]` ^` _` `` {` |` }` ~` a{ b{ c{ d{ e{ f{ g{ h{ i{ j{ k{ l{ m{ n{ o{ p{ q{ r{ s{ t{ u{ v{ w{ x{ y{ z{ A{ B{ C{ D{ E{ F{ G{ H{ I{ J{ K{ L{ M{ N{ O{ P{ Q{ R{ S{ T{ U{ V{ W{ X{ Y{ Z{ .Z [F ]F ^F 0{ 1{ 2{ 3{ 4{ 5{ 6{ 7{ 8{ 9{ !{ #{ ${ %{ '{ ({ ){ *{ +{ ,{ -{ .{ /{ :{ ;{ ={ ?{ @{ [{ ]{ ^{ _{ _F `F ~b ac 1 bc cc 2 dc ec fc {F [t |F }F ]t ~F ^t _t `{ {{ |{ aG }{ bG ~{ a| b| c| d| e| f| g| h| i| j| k| l| m| n| o| p| q| r| s| t| u| cG dG v| w| x| y| z| A| B| C| D| E| eG F| G| H| I| J| K| L| M| N| O| P| Q| R| S| T| U| V| W| X| Y| Z| fG 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| !| #| $| gG %| '| (| )| *| +| ,| -| .| /| :| ;| =| ?| @| [| ]| ^| _| hG `| {| || }| ~| a} b} c} d} e} f} g} h} i} j} k} l} m} n} o} p} q} r} s} t} u} v} iG jG w} x} y} z} A} B} C} D} E} F} G} H} I} J} K} L} M} N} O} P} Q} R} S} T} kG lG U} V} W} X} Y} Z} 0} 1} 2} 3} 4} 5} 6} 7} 8} 9} !} #} $} %} '} (} mG nG )} *} +} ,} -} .} /} :} ;} =} ?} @} [} ]} ^} _} `} {} |} }} ~} a~ oG pG b~ c~ d~ e~ f~ g~ h~ i~ j~ k~ l~ m~ n~ o~ p~ q~ r~ s~ t~ u~ v~ w~ qG rG x~ y~ z~ A~ B~ C~ D~ E~ F~ G~ H~ I~ J~ K~ L~ M~ N~ O~ P~ Q~ R~ S~ sG tG T~ U~ V~ W~ X~ Y~ Z~ 0~ 1~ 2~ 3~ 4~ 5~ 6~ 7~ 8~ 9~ !~ #~ $~ %~ '~ uG vG (~ )~ *~ +~ ,~ -~ .~ /~ :~ ;~ =~ ?~ @~ [~ ]~ ^~ _~ `~ {~ |~ }~ ~~ wG xG aabbabcabdabeabfabgabhabiabjabkablabmabnaboabpabqabrabsabtabuabvabyG zG wabxabyabzabAabBabCabDabEabFabGabHabIabJabKabLabMabNabOabPabQabRabAG BG SabTabUabVabWabXabYabZab0ab1ab2ab3ab4ab5ab6ab7ab8ab9ab!ab#ab$ab%abCG DG 'ab(ab)ab*ab+ab,ab-ab.ab/ab:ab;ab=ab?ab@ab[ab]ab^ab_ab`ab{ab|ab}abEG FG ~ababbbbbcbbdbbebbfbbgbbhbbibbjbbkbblbbmbbnbbobbpbbqbbrbbsbbtbbubbGG HG vbbwbbxbbybbzbbAbbBbbCbbDbbEbbFbbGbbHbbIbbJbbKbbLbbMbbNbbObbPbbQbbIG JG RbbSbbTbbUbbVbbWbbXbbYbbZbb0bb1bb2bb3bb4bb5bb6bb7bb8bb9bb!bb#bb$bbKG LG %bb'bb(bb)bb*bb+bb,bb-bbMG NG .bb/bb:bb;bb=bb?bb@bb[bb]bb^bb_bb`bb{bb|bb}bb~bbOG PG acbbcbccbdcbecbfcbgcbhcbicbjcbkcblcbmcbncbocbpcbqcbrcbscbtcbucbvcbQG RG wcbxcbycbzcbAcbBcbCcbDcbEcbFcbGcbHcbIcbJcbKcbLcbMcbNcbOcbPcbQcbRcbSG TG ScbTcbUcbVcbWcbXcbYcbZcb0cb1cb2cb3cb4cb5cb6cb7cb8cb9cb!cb#cb$cb%cbUG VG 'cb(cb)cb*cb+cb,cb-cb.cb/cb:cbWG ;cbXG /Z =cb?cbYG @cb[cb]cb^cb_cbZG 0G `t 1G :Z gc hc ic jc kc lc mc `cb{cb|cb}cb~cbadbbdbcdbddbedbfdbgdb2G 3G ;Z hdbidbjdbkdbldbmdbndbodbpdbqdbrdbsdbtdbudbvdbwdbxdbydbzdbAdbBdbCdb4G 5G DdbEdb6G Fdb7G 8G GdbHdbIdbJdb9G !G {t #G nc $G Kdb%G LdbMdboc pc qc rc ob | sc pb tc qb 'G uc vc (G |t rb K )G }t ~t Ndb*G au Odb+G =Z ,G -G ?Z .G /G @Z :G ;G [Z =G ?G ]Z @G [G ^Z ]G ^G _Z _G `G `Z Pdb{G |G {Z Qdb}G |Z Rdb~G }Z SdbTdbUdbaH ~Z bH VdbWdbcH a0 XdbdH YdbeH b0 ZdbfH gH c0 0dbhH iH d0 1dbjH kH e0 2dblH mH f0 3dbnH oH g0 4dbpH qH h0 5dbrH sH 6db7db8db9db!db#dbtH uH i0 $db%dbvH wH j0 'db(dbk0 )db*dbxH yH bu zH l0 AH +dbBH ,db-db.db/db:db;dbm0 =dbCH DH ?db@db[db]db^db_db`dbEH n0 FH {dbGH o0 HH p0 |dbIH JH q0 }dbKH LH r0 ~dbMH NH OH PH QH aebRH SH bebcebdebeebTH febUH gebVH hebiebjebkeblebWH XH mebneboebYH pebqebrebZH sebteb0H uebvebwebxebyebzebAebBebCebDebEebFebGebHebIebJebKebLeb1H Meb2H NebOebPebQebs0 Reb3H SebTeb4H UebVebWeb5H 6H 7H 8H Xeb9H Yeb!H Zeb0eb1eb#H 2eb$H 3eb4eb5eb6eb7eb%H 8eb9eb'H cu wc (H t0 !eb5v #eb)H u0 $eb*H v0 +H %eb'eb(ebw0 ,H -H x0 .H /H y0 )eb:H z0 ;H =H *eb+eb?H @H [H ]H ^H ,eb-eb_H `H {H |H A0 }H ~H aI bI OW cI dI |v (s }v )s ~v .s .eb/eb:eb;eb=eb?eb@eb[eb]eb^eb_ebB0 `eb{eb|eb}eb~ebafbbfbcfbdfbefbeI ffbfI gI gfbhfbifbC0 jfbkfblfbmfbnfbofbpfbhI qfbrfbsfbD0 tfbiI jI ufbvfbE0 kI lI wfbF0 mI nI xfbyfboI pI qI rI zfbG0 H0 I0 J0 sI tI AfbBfbCfbDfbuI vI K0 wI EfbFfbGfbHfbIfbJfbxI L0 du yI KfbLfbMfbzI AI M0 N0 BI CI NfbOfbPfbQfbRfbSfbTfbUfbO0 P0 DI EI VfbWfbXfbYfbZfb0fb1fb2fbQ0 R0 S0 FI GI HI 3fb4fb5fb6fb7fb8fbII JI KI T0 LI 9fb!fb#fbMI U0 NI OI $fb%fb'fb(fbV0 PI QI )fb*fbW0 RI +fb,fb-fbSI X0 TI UI .fbY0 VI WI XI Z0 YI ZI 00 /fb:fbf qd xc 0I 6v 1I 7v 2I 8v 3I 4I ;fb=fb?fb@fb5I 6I 10 20 7I 8I [fb]fb^fb_fb`fb{fb30 40 9I |fb!I }fb#I $I ~fbagb50 60 %I bgbcgbdgb_c egbfgbggbhgb`c igb'I (I )I *I jgbkgb+I ,I lgbmgb-I ngb.I eu /I fu :I ;I =I gu hu iu ?I ju @I ku 70 [I lu ]I ^I _I `I {I |I }I mu 80 ~I aJ bJ nu cJ 90 dJ eJ ou fJ ogbpgbgJ qgbhJ rgbiJ sgbtgbjJ ugbvgbkJ wgb!0 #0 $0 lJ xgbygbzgbAgbmJ nJ BgbCgbDgbEgboJ pJ FgbGgbHgbIgbqJ rJ JgbKgbLgbMgbsJ tJ NgbOgbPgbQgbuJ vJ RgbSgbTgbUgbwJ %0 '0 (0 )0 *0 +0 VgbxJ yJ WgbzJ AJ ,0 -0 XgbYgbZgb0gbBJ CJ DJ 1gb.0 pu yc 2gb3gbEJ FJ 4gbGJ 5gb6gb7gb8gbHJ IJ 9gb!gb#gb$gbJJ KJ %gb'gb(gbLJ MJ NJ zc OJ )gbPJ QJ *gbRJ /0 :0 SJ TJ +gb,gb-gb.gb/gb:gbUJ VJ ;gb=gb?gb@gb[gb]gb;0 =0 ?0 WJ XJ YJ qu ZJ @0 0J ru ,v 1J 2J 3J su tu [0 ]0 4J 5J 6J 7J ^0 8J uu 9J vu !J #J $J %J _0 `0 'J {0 (J ^gb|0 )J *J +J }0 ,J _gbwu -J .J /J ~0 :J ;J a1 =J ?J b1 @J [J `gbc1 d1 ]J ^J _J `J {gbe1 {J |J }J ~J |gb}gb~gbahbf1 g1 aK bK bhbchbdhbehbcK dK h1 i1 eK fK fhbghbhhbihbjhbkhbgK hK j1 k1 iK jK lhbkK lK mhbl1 m1 mK nK nhbohboK pK phbqhbn1 o1 qK rK rhbsK tK shbp1 q1 uK r1 vK thbwK xu xK yu uhbyK s1 zK zu vhb$5 whbAu AK Bu Cu BK t1 CK Du DK u1 EK Eu FK v1 Fu GK HK Gu Hu IK w1 JK KK xhbx1 LK MK yhby1 NK OK zhbz1 A1 B1 PK QK Iu RK C1 AhbSK TK UK BhbJu ChbVK Ku WK XK D1 YK E1 ZK F1 0K 1K Dhb2K EhbG1 H1 I1 3K 4K 5K 6K FhbGhbJ1 K1 L1 M1 7K 8K 9K !K #K $K %K 'K HhbIhbJhbKhbLhbMhbNhbOhbN1 O1 (K )K *K +K PhbQhbRhbShbThbUhbP1 Q1 ,K -K .K /K VhbWhbXhbYhbZhb0hb1hb2hbR1 S1 :K ;K =K ?K 3hb4hb5hb6hb7hb8hb9hb!hbT1 U1 @K [K ]K ^K #hb$hb%hb'hbV1 Lu _K `K (hb)hb{K *hb+hb,hbW1 |K -hb}K X1 ~K aL Y1 bL .hbcL Z1 dL /hbeL fL gL 01 hL iL 11 21 jL kL :hb31 41 lL mL ;hb=hb?hb@hb[hb]hb51 61 nL oL ^hb_hb`hb{hb|hb}hb71 81 pL qL ~hbaibbibcib91 !1 rL sL dibeibfibgib#1 $1 tL uL hibiibjibkib%1 '1 vL wL xL yL libmibniboib(1 )1 zL AL pibqibribsib*1 +1 BL CL DL tibuibvibMu ,1 wibxibEL FL yibzib-1 .1 AibGL BibCibHL IL DibEibJL KL /1 :1 FibGibLL ML NL OL ;1 =1 PL QL ?1 @1 HibIibRL SL JibKib[1 ]1 LibTL MibUL ^1 _1 `1 NibOibVL WL XL YL PibQibRibSib{1 |1 TibUibZL 0L 1L 2L VibWib}1 ~1 3L 4L XibYibZib0iba2 b2 1ib2ib3ib4ib5L 6L 5ib6ib7ib8ibc2 d2 7L 8L 9ib!ibe2 f2 9L !L #ib#L $ib%ib'ib(ib)ib*ibg2 h2 +ib,ib$L %L -ib.ib/ib'L :ib;ib(L =ibi2 j2 )L *L +L ,L ?ib@ib[ib]ib^ib_ibk2 l2 `ib{ib|ib}ib~ibajb-L .L bjbcjb/L :L ;L Nu =L Ou ?L @L [L ]L ^L djbejbm2 n2 _L `L Pu {L Qu |L Ru }L ~L aM o2 bM p2 cM dM q2 eM fjbfM r2 s2 gM hM t2 iM jM kM lM u2 v2 Su mM Tu nM w2 x2 oM pM y2 Uu qM rM z2 A2 sM tM gjbhjbuM vM B2 C2 ijbjjbwM xM D2 E2 kjbljbmjbnjbojbpjbqjbrjbyM zM sjbtjbujbvjbwjbxjbF2 G2 yjbzjbAjbBjbCjbDjbAM BM CM EjbFjbDM GjbHjbH2 I2 IjbJjbKjbLjbMjbNjbOjbPjbQjbRjbSjbTjbUjbVjbWjbXjbEM FM YjbZjb0jb1jb2jb3jbJ2 K2 4jb5jb6jb7jb8jb9jb!jb#jb$jb%jb'jb(jb)jb*jbGM HM +jb,jbL2 M2 IM JM -jb.jbKM LM /jb:jbN2 O2 MM NM ;jb=jb?jb@jb[jb]jbOM PM ^jb_jbQM P2 RM SM Q2 TM R2 `jb{jbUM VM Vu WM Wu XM S2 YM |jbZM Xu 0M 1M Yu 2M 3M 4M 5M 6M }jb= ~jb? T2 @ U2 [ akb% bkb' V2 ( W2 ) X2 ckb@c dkbY2 ekbfkbgkbhkbikbjkb7M 8M Z2 kkb9M lkbmkb!M 02 nkbokb#M $M pkb%M 'M (M 12 PW )M Ac *M 22 +M ,M -M .M 32 /M qkb:M ;M rkbsb =M ?M skbtkb@M [M ukb]M ^M vkbwkbxkbykbzkbAkbBkbZu _M `M {M |M }M CkbDkbEkbFkbGkbHkbIkbJkbKkbLkb~M aN bN cN Bc 42 dN eN 3 0u fN gN hN Mkb52 NkbiN 62 jN kN OkbPkblN mN QkbRkbnN SkboN pN qN rN sN tN Tkb1u Cc uN UkbVkbvN Dc Ec Fc WkbXkbYkbZkb0kb1kbwN 2kbxN 2u yN zN 3u 4u AN -v 5u 6u 7u 8u BN CN 3kbDN 72 9u 4kb5kb6kb7kb8kb9kb!kb#kb$kb%kb'kb(kb)kb*kb+kb,kb-kb.kb/kb:kbEN FN GN ;kbaw HN IN =kb?kb@kb[kb]kbJN ^kb_kbGc Hc 82 `kbKN LN MN 92 ;5 (7 %5 NN !u ON Ic Jc PN QN RN SN #u $u TN UN VN WN XN !2 %u YN {kbbw 9v Kc Lc ZN 0N |kb}kb~kbalbblb1N clbdlbelbflbglbhlb2N 3N ilbjlbklbllbmlb4N nlbolbplbqlbrlbslb5N 6N tlb7N ulbvlbwlbxlb8N 9N !N #N $N %N 'N ylb(N )N zlbAlbBlbClbDlb*N Elb+N FlbGlbHlb,N IlbJlb-N KlbLlbMlbNlbOlbPlbQlbRlbSlbTlbUlbVlbWlb.N XlbYlbZlb0lb/N :N ;N =N #2 1lb2lb3lb4lb?N @N [N 5lb6lb7lb8lb9lb!lb#lb$lb%lb'lb(lb)lb*lb+lb,lb-lb.lb/lb:lb;lb=lb?lb@lb[lb]lb^lb]N ^N _N _lb`lb`N {N {lb|lb}lb~lb|N ambbmbcmbMc }N ~N dmbembaO fmbgmbhmbimbjmbkmblmbmmbnmbombpmbqmbrmbsmbtmbumbvmbwmbxmbymbzmbbO AmbBmbCmbcO dO eO Nc Oc fO DmbEmbgO FmbGmbHmbhO iO ImbJmbjO KmbkO cw *s Pc Qc lO mO nO 'u oO pO qO $2 dw ew Lmbfw MmbrO sO tO Nmb%2 OmbPmbQmbuO vO RmbwO xO (u yO zO AO BO SmbCO DO TmbUmbVmbWmbEO )u FO L 4 M N O P Q 5 GO *u HO +u IO ,u JO XmbKO LO MO '2 YmbZmb0mb1mb2mb3mb4mb5mb6mb7mb8mb9mb!mb#mb$mb%mb'mb(mb)mb*mb+mb,mb-mb.mb/mb:mb;mb=mb?mb@mb[mb]mb^mb_mb`mb{mb|mb}mb~mbanbbnbcnbdnbenbfnbgnbNO OO (2 Rc hnbPO inbQO Sc )2 jnbRO knblnbmnbnnbonbpnbqnb*2 SO TO UO VO +2 WO ,2 XO rnb)v p q r s YO -2 -u ZO .u 0O .2 tb ub vb R S wb xb 1O /u 2O 3O 4O 5O 6O :u 7O 8O 9O snbtnbunbvnbwnb/2 xnbynbznbAnbBnbCnbDnbEnbFnbGnbHnbInbJnbKnbLnbMnbNnbOnbPnbQnbRnbSnbTnbUnbVnbWnbXnbYnbZnb0nb1nb2nb3nb4nb5nb6nb7nb8nb9nb!nb#nb$nb%nb'nb(nb)nb*nb+nb,nb-nb.nb/nb:nb;nb=nb?nb@nb[nb]nb^nb_nb`nb{nb|nb}nb~nbaobbobcobdobeobfobgobhobiob:2 !O #O $O jobkoblobmobnoboobpobqobrobsobtobuobvobwobxobyobzobAobBobCobDobEobFobGobHobIobJobKobLobMob%O Nob'O (O Tc Uc 6 Vc Wc 7 Xc Yc Zc )O ;u *O +O =u ,O ?u @u Oob-O Pob.O Qob/O RobSobTobUobVobWobXobYobZob0ob1ob2ob3ob4ob5ob6ob7ob8ob9ob!ob:O #ob;O =O $ob%ob'ob(ob)ob*ob+ob,ob-ob.ob?O /ob:ob;ob=ob?ob@ob[ob]ob^ob_ob`ob{ob|ob}ob~obapbbpbcpbdpbepb@O [O fpbgpbhpbipbjpbkpblpbmpbnpbopbppbqpbrpb]O spbtpbupbvpbwpbxpbypbzpbApbBpbCpbDpbEpbFpbGpbHpbIpb^O Jpb_O KpbLpbMpbNpbOpbPpbQpbRpbSpbTpbUpbVpbWpbXpbYpbZpb0pb1pb2pb3pb4pb5pb6pb7pb8pb`O 9pb{O |O !pb#pb$pb%pb'pb(pb)pb*pb+pb,pb-pb.pb/pb:pb;pb=pb?pb@pb[pb]pb^pb_pb`pb}O ~O aP {pb|pb}pb~pbaqbbqbcqbdqbeqbfqbgqbhqbiqbjqbkqblqbmqbnqboqbpqbqqbbP cP dP rqbsqbtqbuqbvqbwqbxqbeP yqbzqbAqbBqbCqbDqbEqbFqbGqbHqbIqbJqbKqbLqbfP gP MqbNqbOqbPqbQqbRqbhP SqbTqbUqbVqbWqbXqbYqbZqb0qb1qb2qb3qb4qb5qb6qbiP jP 7qb8qb9qb!qb#qb$qbkP lP %qb'qb(qb)qb*qb+qb,qb-qb.qb/qb:qb;qb=qb?qbmP @qb[qb]qb^qb_qb`qb{qbnP |qb}qb~qbarbbrbcrbdrberbfrbgrbhrbirbjrbkrblrboP pP mrbnrborbprbqrbrrbsrbtrburbvrbwrbxrbyrbzrbArbBrbCrbDrbErbFrbGrbqP rP sP HrbIrbJrbKrbLrbMrbNrbOrbPrbQrbRrbSrbTrbUrbVrbWrbXrbYrbZrb0rb1rbtP uP vP 2rb3rb4rb5rb6rb7rb8rb9rb!rb#rb$rb%rb'rb(rb)rb*rb+rb,rb-rb.rb/rbwP xP yP :rb;rb=rb?rb@rb[rb]rb^rb_rb`rb{rb|rb}rb~rbasbbsbcsbdsbesbfsbgsbzP AP BP hsbisbjsbksblsbmsbnsbosbpsbqsbrsbssbtsbusbvsbwsbxsbysbzsbAsbBsbCP DP EP CsbDsbEsbFsbGsbHsbIsbJsbKsbLsbMsbNsbOsbPsbQsbRsbSsbTsbUsbVsbWsbFP GP HP XsbYsbZsb0sb1sb2sb3sb4sb5sb6sb7sb8sb9sb!sb#sb$sb%sb'sb(sb)sbIP *sbJP KP +sb,sb-sb.sb/sb:sb;sb=sb?sb@sb[sb]sb^sb_sb`sb{sb|sb}sb~sbatbLP btbMP NP ctbdtbetbftbgtbhtbitbOP PP QP jtbktbltbmtbntbotbptbqtbrtbstbttbutbvtbwtbxtbRP SP TP ytbztbAtbBtbCtbDtbEtbFtbGtbHtbItbJtbKtbLtbMtbNtbOtbPtbQtbRtbStbUP VP WP TtbUtbVtbWtbXtbYtbZtb0tb1tb2tb3tb4tb5tb6tb7tb8tb9tb!tb#tb$tb%tbXP YP ZP 'tb(tb)tb*tb+tb,tb-tb.tb/tb:tb;tb=tb?tb@tb[tb]tb^tb_tb`tb{tb|tb0P 1P 2P }tb~tbaubbubcubdubeubfub3P gub4P hub5P ;2 6P iub7P jubkublubmubnub8P 9P [u !P ]u 0c 1c 2c 3c 4c 5c 6c oubpubqubrubsubtubuubvubwubxubyubzub#P $P =2 AubBubCubDubEubFubGubHubIubJubKubLub%P MubNubOubPubQubRubSubTubUub'P (P )P *P +P Vub,P -P .P WubXubYub/P :P ^u ;P 7c =P ?P @P Zub0ub8c 9c !c #c yb } $c zb %c Ab [P 'c (c ]P _u Bb T ^P `u ?2 _P `P {u 1ub{P @2 |P }P [2 ~P aQ |u bQ cQ ]2 dQ eQ }u fQ gQ ~u hQ iQ av jQ kQ ^2 lQ mQ nQ bv oQ pQ cv qQ rQ _2 sQ tQ 2ubuQ `2 vQ wQ 3ubxQ {2 yQ zQ 4ubAQ |2 BQ CQ DQ }2 EQ FQ GQ ~2 HQ IQ JQ a3 KQ LQ MQ b3 NQ OQ PQ dv 5ubQQ RQ c3 SQ TQ UQ 6ub7ub8ub9ub!ub#ubVQ WQ d3 $ubXQ YQ ZQ e3 0Q %ubf3 'ub1Q 2Q 3Q ev 4Q g3 5Q 6Q 7Q (ub)ub*ub+ub,ub-ubh3 8Q 9Q !Q .ub/ub:ub;ub=ub?ub@ub#Q fv $Q [ub%Q gv 'Q i3 (Q )Q *Q j3 +Q ,Q -Q k3 .Q /Q :Q ;Q =Q ?Q @Q [Q ]Q ^Q ]ub^ub_ub_Q `ub`Q {ub{Q |ub}ub~ubavb|Q }Q ~Q bvbaR cvbbR dvbcR evbdR fvbgvbeR fR hvbivbjvbkvblvbmvbnvbovbpvbqvbrvbsvbtvbuvbvvbwvbxvbgR hR iR yvbzvbAvbBvbl3 CvbjR DvbEvbkR FvbGvbHvblR mR nR IvbJvboR KvbpR LvbMvbNvbqR OvbrR PvbQvbRvbSvbTvbsR UvbVvbtR hv )c uR m3 Wvb!v XvbvR n3 YvbwR o3 Zvb0vb1vb2vbp3 3vbxR q3 yR 4vbr3 5vbzR s3 6vbAR 7vb8vbBR CR DR ER FR 9vb!vbGR #vbHR $vbt3 IR JR KR LR QW %vbMR gw kw hw lw iw RW 'vb(vb)vb*vb+vb,vb-vb.vb/vb:vb;vbu3 =vb?vb@vb[vb]vb^vb_vb`vb{vb|vbNR }vb~vbOR awbbwbcwbv3 dwbewbfwbgwbhwbiwbjwbkwblwbmwbnwbw3 owbPR pwbqwbrwbx3 QR swbtwby3 RR uwbvwbwwbxwbSR TR ywbzwbz3 A3 B3 C3 UR VR AwbBwbCwbDwbEwbFwbD3 WR GwbHwbIwbJwbKwbLwbMwbE3 F3 NwbOwbPwbQwbXR YR G3 H3 ZR 0R RwbSwbTwbUwbVwbWwbXwbYwbI3 J3 1R 2R Zwb0wb1wb2wb3wb4wb5wb6wbK3 L3 M3 3R 4R 5R 7wb8wb9wb!wb#wb$wb%wb'wb(wbN3 6R )wb*wb+wb,wbO3 7R -wb.wb/wb:wb;wbP3 8R =wb?wb@wbQ3 9R [wb]wb^wb_wbR3 !R `wb{wbS3 #R |wb$R T3 }wb%R U3 ~wbaxbg rd *c bxb#v cxb$v dxb%v 'R (R exbfxbgxbhxbixbjxbV3 W3 )R *R kxblxbmxbnxboxbpxbX3 Y3 +R qxbrxbsxb,R txbuxbvxbZ3 03 -R wxbxxbyxb{c zxbAxbBxbCxb|c DxbExb.R Fxb/R GxbHxb:R ;R IxbJxb=R Kxb?R 13 @R 23 [R ]R ^R 33 43 53 _R 63 `R 73 83 {R 93 |R }R ~R aS bS cS dS !3 #3 LxbeS fS $3 Mxb%3 gS hS iv iS NxbOxbPxbQxbjS RxbSxbTxbUxbkS VxbWxbXxbYxb'3 (3 )3 lS Zxb0xb1xb2xb3xbmS 4xb5xb6xb7xb8xbnS 9xb!xb#xb$xb%xboS 'xbpS (xb)xb*xbqS +xb,xb-xb.xb/xbrS :xb;xb=xb?xb@xb*3 +3 ,3 -3 .3 /3 [xbsS ]xb^xbtS _xb:3 jv `xb{xb|xb}xbuS vS ~xbayb;3 =3 +c bybcybwS xS dybeybfybgybhybiybyS zS jybkyblybmybAS BS nyboybpybqybCS DS ,c ES rybsybFS tybuyb?3 @3 vybwybxybyybzybAybBybCybGS HS DybEybFybGybHybIyb[3 ]3 ^3 IS JybJS _3 KS `3 LS {3 +5 MS NS OS |3 }3 ~3 a4 PS QS RS Kybb4 SS c4 TS d4 US LybVS Mybe4 f4 Nybg4 WS Oybh4 XS PybQybi4 YS Rybj4 ZS Syb0S k4 1S Tybl4 Uyb2S m4 Vyb3S Wybn4 o4 4S XybYyb5S Zybp4 6S 7S 0yb1yb2yb3yb4yb5ybq4 r4 8S 9S 6yb7yb8yb9yb!yb#ybs4 t4 !S #S $yb%yb'yb(yb)yb*yb+yb,ybu4 v4 $S -yb.yb%S /yb:ybw4 x4 'S ;yb=yb?yb(S @yb[yb]yby4 z4 )S ^yb_yb*S `yb{ybA4 B4 |ybC4 +S }yb,S D4 -S E4 ~yb.S F4 /S G4 azb'5 bzbH4 :S 85 kv ;S I4 =S J4 ?S K4 @S L4 [S M4 N4 ]S ^S O4 P4 _S Q4 `S czbdzbR4 {S ezbfzbS4 |S }S gzbT4 U4 V4 ~S aT W4 bT X4 hzbcT izbdT jzbY4 kzbeT Z4 lzbfT 04 gT 14 hT 24 mzbiT nzbozbpzb34 44 54 jT qzbkT rzbszbtzb64 74 84 94 lT uzbmT vzbnT wzboT xzbyzbzzbAzbBzbCzbDzbEzbFzb!4 #4 GzbpT HzbqT IzbJzbKzbLzbMzbNzb$4 %4 rT OzbsT PzbQzbRzbSzbTzbUzbVzbWzbXzb'4 (4 tT YzbuT Zzb0zb1zb2zb3zb4zb5zb6zb7zb)4 *4 vT wT 8zb9zb!zb#zb$zb%zb+4 ,4 xT yT 'zb(zbzT )zb*zb+zb-4 AT ,zbBT .4 CT DT /4 ET -zbFT :4 .zbGT HT IT JT ;4 KT LT =4 ?4 MT NT /zb@4 lv OT PT :zb;zb=zb?zbQT @zb[4 ]4 RT ST [zb]zb^zb_zb`zb{zb^4 _4 TT UT VT WT |zb}zb`4 {4 XT YT ZT 0T 1T 2T |4 }4 3T 4T 5T 6T 7T 8T ~4 a5 9T !T #T $T ~zb%T aAbbAbb5 c5 'T (T cAbdAbeAbfAbd5 e5 )T *T gAbhAbiAbjAbf5 mv kAblAb+T ,T -T .T g5 h5 mAb/T :T ;T =T ?T @T nAb[T ]T i5 j5 ^T _T `T {T |T }T nv ov ~T aU pv k5 oAbbU cU dU pAbeU qv l5 qAbfU gU hU m5 n5 o5 iU jU kU lU mU nU rAbsAbtAbuAbp5 q5 vAbwAboU pU xAbyAbqU rU rv sv sU tU uU vU zAbAAbr5 s5 wU xU yU zU AU BU BAbCAbCU DU t5 u5 EU FU GU HU v5 w5 IU JU DAbEAbKU LU MU NU FAbGAbx5 y5 HAbOU PU QU IAbJAbRU KAbSU TU LAbMAbz5 A5 UU VU NAbOAbWU XU YU ZU PAbQAbB5 C5 0U RAbSAbTAbUAbVAb1U 2U WAb3U 4U 5U 6U tv 7U uv 8U 9U !U #U $U %U 'U D5 E5 (U )U vv *U wv +U xv ,U -U .U yv /U zv :U ;U Av =U ?U @U F5 Bv [U ]U Cv ^U _U `U {U G5 Dv Ev |U Fv }U Gv Hv ~U aV Iv Jv bV cV Kv Lv dV eV fV gV hV iV H5 I5 jV kV lV mV J5 Mv nV XAbYAbZAb0Ab1Ab2Ab3AboV pV qV 4Ab5AbrV sV 6AbK5 L5 7Ab8Ab9Ab!Ab#Ab$AbtV uV %Ab'Ab(AbvV wV )AbM5 Nv *Ab+Ab,Ab-Ab.Ab/AbxV :Ab;Ab=Ab?Ab@Ab[Ab]Ab^Ab_AbyV zV AV BV CV DV `Ab{AbN5 O5 |Ab}Ab~AbaBbbBbcBbdBbeBbfBbgBbhBbiBbjBbkBblBbmBbnBboBbP5 Q5 EV FV pBbqBbGV HV rBbIV R5 S5 JV KV LV sBbtBbuBbvBbwBbxBbMV NV OV PV Ov QV RV Pv SV T5 yBbTV UV VV Qv WV Rv XV U5 YV ZV 0V Sv 1V 2V Tv 3V 4V 5V 6V 7V zBb] ABb^ V5 _ W5 ` BBb* CBb+ X5 , Y5 - Z5 DBb[c EBb05 FBbGBbHBbIBbJBb8V 9V !V Uv KBbLBbMBb#V $V 15 NBbOBb%V 'V (V )V *V +V Vv ,s ,V -c -V 25 .V /V :V ;V 35 =V ?V @V [V PBbCb ]V ^V QBbRBb_V `V {V |V }V SBbTBb~V UBbVBbWBbXBbWv aW bW cW dW eW fW gW YBbZBbhW 0Bb1BbiW 2Bb3BbjW kW lW mW .c 45 nW oW 8 Xv pW qW 4BbrW 55 sW tW 65 uW vW 5Bb6BbwW xW yW 7BbzW AW BW CW DW EW FW GW HW Yv /c IW JW 8BbKW :c ;c =c 9BbLW !Bb#Bb$Bb%BbMW 'Bb

1161 

1162 def add_api_route( 1abcd

1163 self, 

1164 path: str, 

1165 endpoint: Callable[..., Any], 

1166 *, 

1167 response_model: Any = Default(None), 

1168 status_code: int | None = None, 

1169 tags: list[str | Enum] | None = None, 

1170 dependencies: Sequence[Depends] | None = None, 

1171 summary: str | None = None, 

1172 description: str | None = None, 

1173 response_description: str = "Successful Response", 

1174 responses: dict[int | str, dict[str, Any]] | None = None, 

1175 deprecated: bool | None = None, 

1176 methods: list[str] | None = None, 

1177 operation_id: str | None = None, 

1178 response_model_include: IncEx | None = None, 

1179 response_model_exclude: IncEx | None = None, 

1180 response_model_by_alias: bool = True, 

1181 response_model_exclude_unset: bool = False, 

1182 response_model_exclude_defaults: bool = False, 

1183 response_model_exclude_none: bool = False, 

1184 include_in_schema: bool = True, 

1185 response_class: type[Response] | DefaultPlaceholder = Default(JSONResponse), 

1186 name: str | None = None, 

1187 openapi_extra: dict[str, Any] | None = None, 

1188 generate_unique_id_function: Callable[[routing.APIRoute], str] = Default( 

1189 generate_unique_id 

1190 ), 

1191 ) -> None: 

1192 self.router.add_api_route( 1abcd

1193 path, 

1194 endpoint=endpoint, 

1195 response_model=response_model, 

1196 status_code=status_code, 

1197 tags=tags, 

1198 dependencies=dependencies, 

1199 summary=summary, 

1200 description=description, 

1201 response_description=response_description, 

1202 responses=responses, 

1203 deprecated=deprecated, 

1204 methods=methods, 

1205 operation_id=operation_id, 

1206 response_model_include=response_model_include, 

1207 response_model_exclude=response_model_exclude, 

1208 response_model_by_alias=response_model_by_alias, 

1209 response_model_exclude_unset=response_model_exclude_unset, 

1210 response_model_exclude_defaults=response_model_exclude_defaults, 

1211 response_model_exclude_none=response_model_exclude_none, 

1212 include_in_schema=include_in_schema, 

1213 response_class=response_class, 

1214 name=name, 

1215 openapi_extra=openapi_extra, 

1216 generate_unique_id_function=generate_unique_id_function, 

1217 ) 

1218 

1219 def api_route( 1abcd

1220 self, 

1221 path: str, 

1222 *, 

1223 response_model: Any = Default(None), 

1224 status_code: int | None = None, 

1225 tags: list[str | Enum] | None = None, 

1226 dependencies: Sequence[Depends] | None = None, 

1227 summary: str | None = None, 

1228 description: str | None = None, 

1229 response_description: str = "Successful Response", 

1230 responses: dict[int | str, dict[str, Any]] | None = None, 

1231 deprecated: bool | None = None, 

1232 methods: list[str] | None = None, 

1233 operation_id: str | None = None, 

1234 response_model_include: IncEx | None = None, 

1235 response_model_exclude: IncEx | None = None, 

1236 response_model_by_alias: bool = True, 

1237 response_model_exclude_unset: bool = False, 

1238 response_model_exclude_defaults: bool = False, 

1239 response_model_exclude_none: bool = False, 

1240 include_in_schema: bool = True, 

1241 response_class: type[Response] = Default(JSONResponse), 

1242 name: str | None = None, 

1243 openapi_extra: dict[str, Any] | None = None, 

1244 generate_unique_id_function: Callable[[routing.APIRoute], str] = Default( 

1245 generate_unique_id 

1246 ), 

1247 ) -> Callable[[DecoratedCallable], DecoratedCallable]: 

1248 def decorator(func: DecoratedCallable) -> DecoratedCallable: 1abcd

1249 self.router.add_api_route( 1abcd

1250 path, 

1251 func, 

1252 response_model=response_model, 

1253 status_code=status_code, 

1254 tags=tags, 

1255 dependencies=dependencies, 

1256 summary=summary, 

1257 description=description, 

1258 response_description=response_description, 

1259 responses=responses, 

1260 deprecated=deprecated, 

1261 methods=methods, 

1262 operation_id=operation_id, 

1263 response_model_include=response_model_include, 

1264 response_model_exclude=response_model_exclude, 

1265 response_model_by_alias=response_model_by_alias, 

1266 response_model_exclude_unset=response_model_exclude_unset, 

1267 response_model_exclude_defaults=response_model_exclude_defaults, 

1268 response_model_exclude_none=response_model_exclude_none, 

1269 include_in_schema=include_in_schema, 

1270 response_class=response_class, 

1271 name=name, 

1272 openapi_extra=openapi_extra, 

1273 generate_unique_id_function=generate_unique_id_function, 

1274 ) 

1275 return func 1abcd

1276 

1277 return decorator 1abcd

1278 

1279 def add_api_websocket_route( 1abcd

1280 self, 

1281 path: str, 

1282 endpoint: Callable[..., Any], 

1283 name: str | None = None, 

1284 *, 

1285 dependencies: Sequence[Depends] | None = None, 

1286 ) -> None: 

1287 self.router.add_api_websocket_route( 2a ?5}c~cadbdcdb c @5ddedfdgdd [5hdidjdkdldmdndod

1288 path, 

1289 endpoint, 

1290 name=name, 

1291 dependencies=dependencies, 

1292 ) 

1293 

1294 def websocket( 1abcd

1295 self, 

1296 path: Annotated[ 

1297 str, 

1298 Doc( 

1299 """ 

1300 WebSocket path. 

1301 """ 

1302 ), 

1303 ], 

1304 name: Annotated[ 

1305 str | None, 

1306 Doc( 

1307 """ 

1308 A name for the WebSocket. Only used internally. 

1309 """ 

1310 ), 

1311 ] = None, 

1312 *, 

1313 dependencies: Annotated[ 

1314 Sequence[Depends] | None, 

1315 Doc( 

1316 """ 

1317 A list of dependencies (using `Depends()`) to be used for this 

1318 WebSocket. 

1319 

1320 Read more about it in the 

1321 [FastAPI docs for WebSockets](https://fastapi.tiangolo.com/advanced/websockets/). 

1322 """ 

1323 ), 

1324 ] = None, 

1325 ) -> Callable[[DecoratedCallable], DecoratedCallable]: 

1326 """ 

1327 Decorate a WebSocket function. 

1328 

1329 Read more about it in the 

1330 [FastAPI docs for WebSockets](https://fastapi.tiangolo.com/advanced/websockets/). 

1331 

1332 **Example** 

1333 

1334 ```python 

1335 from fastapi import FastAPI, WebSocket 

1336 

1337 app = FastAPI() 

1338 

1339 @app.websocket("/ws") 

1340 async def websocket_endpoint(websocket: WebSocket): 

1341 await websocket.accept() 

1342 while True: 

1343 data = await websocket.receive_text() 

1344 await websocket.send_text(f"Message text was: {data}") 

1345 ``` 

1346 """ 

1347 

1348 def decorator(func: DecoratedCallable) -> DecoratedCallable: 2a ?5}c~cadbdcdb c @5ddedfdgdd [5hdidjdkdldmdndod

1349 self.add_api_websocket_route( 2a ?5}c~cadbdcdb c @5ddedfdgdd [5hdidjdkdldmdndod

1350 path, 

1351 func, 

1352 name=name, 

1353 dependencies=dependencies, 

1354 ) 

1355 return func 2a }c~cadbdcdb c ddedfdgdd hdidjdkdldmdndod

1356 

1357 return decorator 2a ?5}c~cadbdcdb c @5ddedfdgdd [5hdidjdkdldmdndod

1358 

1359 def include_router( 1abcd

1360 self, 

1361 router: Annotated[routing.APIRouter, Doc("The `APIRouter` to include.")], 

1362 *, 

1363 prefix: Annotated[str, Doc("An optional path prefix for the router.")] = "", 

1364 tags: Annotated[ 

1365 list[str | Enum] | None, 

1366 Doc( 

1367 """ 

1368 A list of tags to be applied to all the *path operations* in this 

1369 router. 

1370 

1371 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

1372 

1373 Read more about it in the 

1374 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

1375 """ 

1376 ), 

1377 ] = None, 

1378 dependencies: Annotated[ 

1379 Sequence[Depends] | None, 

1380 Doc( 

1381 """ 

1382 A list of dependencies (using `Depends()`) to be applied to all the 

1383 *path operations* in this router. 

1384 

1385 Read more about it in the 

1386 [FastAPI docs for Bigger Applications - Multiple Files](https://fastapi.tiangolo.com/tutorial/bigger-applications/#include-an-apirouter-with-a-custom-prefix-tags-responses-and-dependencies). 

1387 

1388 **Example** 

1389 

1390 ```python 

1391 from fastapi import Depends, FastAPI 

1392 

1393 from .dependencies import get_token_header 

1394 from .internal import admin 

1395 

1396 app = FastAPI() 

1397 

1398 app.include_router( 

1399 admin.router, 

1400 dependencies=[Depends(get_token_header)], 

1401 ) 

1402 ``` 

1403 """ 

1404 ), 

1405 ] = None, 

1406 responses: Annotated[ 

1407 dict[int | str, dict[str, Any]] | None, 

1408 Doc( 

1409 """ 

1410 Additional responses to be shown in OpenAPI. 

1411 

1412 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

1413 

1414 Read more about it in the 

1415 [FastAPI docs for Additional Responses in OpenAPI](https://fastapi.tiangolo.com/advanced/additional-responses/). 

1416 

1417 And in the 

1418 [FastAPI docs for Bigger Applications](https://fastapi.tiangolo.com/tutorial/bigger-applications/#include-an-apirouter-with-a-custom-prefix-tags-responses-and-dependencies). 

1419 """ 

1420 ), 

1421 ] = None, 

1422 deprecated: Annotated[ 

1423 bool | None, 

1424 Doc( 

1425 """ 

1426 Mark all the *path operations* in this router as deprecated. 

1427 

1428 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

1429 

1430 **Example** 

1431 

1432 ```python 

1433 from fastapi import FastAPI 

1434 

1435 from .internal import old_api 

1436 

1437 app = FastAPI() 

1438 

1439 app.include_router( 

1440 old_api.router, 

1441 deprecated=True, 

1442 ) 

1443 ``` 

1444 """ 

1445 ), 

1446 ] = None, 

1447 include_in_schema: Annotated[ 

1448 bool, 

1449 Doc( 

1450 """ 

1451 Include (or not) all the *path operations* in this router in the 

1452 generated OpenAPI schema. 

1453 

1454 This affects the generated OpenAPI (e.g. visible at `/docs`). 

1455 

1456 **Example** 

1457 

1458 ```python 

1459 from fastapi import FastAPI 

1460 

1461 from .internal import old_api 

1462 

1463 app = FastAPI() 

1464 

1465 app.include_router( 

1466 old_api.router, 

1467 include_in_schema=False, 

1468 ) 

1469 ``` 

1470 """ 

1471 ), 

1472 ] = True, 

1473 default_response_class: Annotated[ 

1474 type[Response], 

1475 Doc( 

1476 """ 

1477 Default response class to be used for the *path operations* in this 

1478 router. 

1479 

1480 Read more in the 

1481 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#default-response-class). 

1482 

1483 **Example** 

1484 

1485 ```python 

1486 from fastapi import FastAPI 

1487 from fastapi.responses import ORJSONResponse 

1488 

1489 from .internal import old_api 

1490 

1491 app = FastAPI() 

1492 

1493 app.include_router( 

1494 old_api.router, 

1495 default_response_class=ORJSONResponse, 

1496 ) 

1497 ``` 

1498 """ 

1499 ), 

1500 ] = Default(JSONResponse), 

1501 callbacks: Annotated[ 

1502 list[BaseRoute] | None, 

1503 Doc( 

1504 """ 

1505 List of *path operations* that will be used as OpenAPI callbacks. 

1506 

1507 This is only for OpenAPI documentation, the callbacks won't be used 

1508 directly. 

1509 

1510 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

1511 

1512 Read more about it in the 

1513 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/). 

1514 """ 

1515 ), 

1516 ] = None, 

1517 generate_unique_id_function: Annotated[ 

1518 Callable[[routing.APIRoute], str], 

1519 Doc( 

1520 """ 

1521 Customize the function used to generate unique IDs for the *path 

1522 operations* shown in the generated OpenAPI. 

1523 

1524 This is particularly useful when automatically generating clients or 

1525 SDKs for your API. 

1526 

1527 Read more about it in the 

1528 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

1529 """ 

1530 ), 

1531 ] = Default(generate_unique_id), 

1532 ) -> None: 

1533 """ 

1534 Include an `APIRouter` in the same app. 

1535 

1536 Read more about it in the 

1537 [FastAPI docs for Bigger Applications](https://fastapi.tiangolo.com/tutorial/bigger-applications/). 

1538 

1539 ## Example 

1540 

1541 ```python 

1542 from fastapi import FastAPI 

1543 

1544 from .users import users_router 

1545 

1546 app = FastAPI() 

1547 

1548 app.include_router(users_router) 

1549 ``` 

1550 """ 

1551 self.router.include_router( 3a Eb /Bbt u v w x y 6b 7b { 9b fb gb #b $b sd td Cd Dd -b .b /b b c ;b :BbC D E F G H pc qc | sc pb qb uc vc 'd (d :d Dc Ec Fc d Hc ;BbL M N O P Q 9c !c } $c zb Ab 'c (c we Be :c ;c =c

1552 router, 

1553 prefix=prefix, 

1554 tags=tags, 

1555 dependencies=dependencies, 

1556 responses=responses, 

1557 deprecated=deprecated, 

1558 include_in_schema=include_in_schema, 

1559 default_response_class=default_response_class, 

1560 callbacks=callbacks, 

1561 generate_unique_id_function=generate_unique_id_function, 

1562 ) 

1563 

1564 def get( 1abcd

1565 self, 

1566 path: Annotated[ 

1567 str, 

1568 Doc( 

1569 """ 

1570 The URL path to be used for this *path operation*. 

1571 

1572 For example, in `http://example.com/items`, the path is `/items`. 

1573 """ 

1574 ), 

1575 ], 

1576 *, 

1577 response_model: Annotated[ 

1578 Any, 

1579 Doc( 

1580 """ 

1581 The type to use for the response. 

1582 

1583 It could be any valid Pydantic *field* type. So, it doesn't have to 

1584 be a Pydantic model, it could be other things, like a `list`, `dict`, 

1585 etc. 

1586 

1587 It will be used for: 

1588 

1589 * Documentation: the generated OpenAPI (and the UI at `/docs`) will 

1590 show it as the response (JSON Schema). 

1591 * Serialization: you could return an arbitrary object and the 

1592 `response_model` would be used to serialize that object into the 

1593 corresponding JSON. 

1594 * Filtering: the JSON sent to the client will only contain the data 

1595 (fields) defined in the `response_model`. If you returned an object 

1596 that contains an attribute `password` but the `response_model` does 

1597 not include that field, the JSON sent to the client would not have 

1598 that `password`. 

1599 * Validation: whatever you return will be serialized with the 

1600 `response_model`, converting any data as necessary to generate the 

1601 corresponding JSON. But if the data in the object returned is not 

1602 valid, that would mean a violation of the contract with the client, 

1603 so it's an error from the API developer. So, FastAPI will raise an 

1604 error and return a 500 error code (Internal Server Error). 

1605 

1606 Read more about it in the 

1607 [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/). 

1608 """ 

1609 ), 

1610 ] = Default(None), 

1611 status_code: Annotated[ 

1612 int | None, 

1613 Doc( 

1614 """ 

1615 The default status code to be used for the response. 

1616 

1617 You could override the status code by returning a response directly. 

1618 

1619 Read more about it in the 

1620 [FastAPI docs for Response Status Code](https://fastapi.tiangolo.com/tutorial/response-status-code/). 

1621 """ 

1622 ), 

1623 ] = None, 

1624 tags: Annotated[ 

1625 list[str | Enum] | None, 

1626 Doc( 

1627 """ 

1628 A list of tags to be applied to the *path operation*. 

1629 

1630 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

1631 

1632 Read more about it in the 

1633 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags). 

1634 """ 

1635 ), 

1636 ] = None, 

1637 dependencies: Annotated[ 

1638 Sequence[Depends] | None, 

1639 Doc( 

1640 """ 

1641 A list of dependencies (using `Depends()`) to be applied to the 

1642 *path operation*. 

1643 

1644 Read more about it in the 

1645 [FastAPI docs for Dependencies in path operation decorators](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/). 

1646 """ 

1647 ), 

1648 ] = None, 

1649 summary: Annotated[ 

1650 str | None, 

1651 Doc( 

1652 """ 

1653 A summary for the *path operation*. 

1654 

1655 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

1656 

1657 Read more about it in the 

1658 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

1659 """ 

1660 ), 

1661 ] = None, 

1662 description: Annotated[ 

1663 str | None, 

1664 Doc( 

1665 """ 

1666 A description for the *path operation*. 

1667 

1668 If not provided, it will be extracted automatically from the docstring 

1669 of the *path operation function*. 

1670 

1671 It can contain Markdown. 

1672 

1673 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

1674 

1675 Read more about it in the 

1676 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

1677 """ 

1678 ), 

1679 ] = None, 

1680 response_description: Annotated[ 

1681 str, 

1682 Doc( 

1683 """ 

1684 The description for the default response. 

1685 

1686 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

1687 """ 

1688 ), 

1689 ] = "Successful Response", 

1690 responses: Annotated[ 

1691 dict[int | str, dict[str, Any]] | None, 

1692 Doc( 

1693 """ 

1694 Additional responses that could be returned by this *path operation*. 

1695 

1696 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

1697 """ 

1698 ), 

1699 ] = None, 

1700 deprecated: Annotated[ 

1701 bool | None, 

1702 Doc( 

1703 """ 

1704 Mark this *path operation* as deprecated. 

1705 

1706 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

1707 """ 

1708 ), 

1709 ] = None, 

1710 operation_id: Annotated[ 

1711 str | None, 

1712 Doc( 

1713 """ 

1714 Custom operation ID to be used by this *path operation*. 

1715 

1716 By default, it is generated automatically. 

1717 

1718 If you provide a custom operation ID, you need to make sure it is 

1719 unique for the whole API. 

1720 

1721 You can customize the 

1722 operation ID generation with the parameter 

1723 `generate_unique_id_function` in the `FastAPI` class. 

1724 

1725 Read more about it in the 

1726 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

1727 """ 

1728 ), 

1729 ] = None, 

1730 response_model_include: Annotated[ 

1731 IncEx | None, 

1732 Doc( 

1733 """ 

1734 Configuration passed to Pydantic to include only certain fields in the 

1735 response data. 

1736 

1737 Read more about it in the 

1738 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

1739 """ 

1740 ), 

1741 ] = None, 

1742 response_model_exclude: Annotated[ 

1743 IncEx | None, 

1744 Doc( 

1745 """ 

1746 Configuration passed to Pydantic to exclude certain fields in the 

1747 response data. 

1748 

1749 Read more about it in the 

1750 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

1751 """ 

1752 ), 

1753 ] = None, 

1754 response_model_by_alias: Annotated[ 

1755 bool, 

1756 Doc( 

1757 """ 

1758 Configuration passed to Pydantic to define if the response model 

1759 should be serialized by alias when an alias is used. 

1760 

1761 Read more about it in the 

1762 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

1763 """ 

1764 ), 

1765 ] = True, 

1766 response_model_exclude_unset: Annotated[ 

1767 bool, 

1768 Doc( 

1769 """ 

1770 Configuration passed to Pydantic to define if the response data 

1771 should have all the fields, including the ones that were not set and 

1772 have their default values. This is different from 

1773 `response_model_exclude_defaults` in that if the fields are set, 

1774 they will be included in the response, even if the value is the same 

1775 as the default. 

1776 

1777 When `True`, default values are omitted from the response. 

1778 

1779 Read more about it in the 

1780 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter). 

1781 """ 

1782 ), 

1783 ] = False, 

1784 response_model_exclude_defaults: Annotated[ 

1785 bool, 

1786 Doc( 

1787 """ 

1788 Configuration passed to Pydantic to define if the response data 

1789 should have all the fields, including the ones that have the same value 

1790 as the default. This is different from `response_model_exclude_unset` 

1791 in that if the fields are set but contain the same default values, 

1792 they will be excluded from the response. 

1793 

1794 When `True`, default values are omitted from the response. 

1795 

1796 Read more about it in the 

1797 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter). 

1798 """ 

1799 ), 

1800 ] = False, 

1801 response_model_exclude_none: Annotated[ 

1802 bool, 

1803 Doc( 

1804 """ 

1805 Configuration passed to Pydantic to define if the response data should 

1806 exclude fields set to `None`. 

1807 

1808 This is much simpler (less smart) than `response_model_exclude_unset` 

1809 and `response_model_exclude_defaults`. You probably want to use one of 

1810 those two instead of this one, as those allow returning `None` values 

1811 when it makes sense. 

1812 

1813 Read more about it in the 

1814 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_exclude_none). 

1815 """ 

1816 ), 

1817 ] = False, 

1818 include_in_schema: Annotated[ 

1819 bool, 

1820 Doc( 

1821 """ 

1822 Include this *path operation* in the generated OpenAPI schema. 

1823 

1824 This affects the generated OpenAPI (e.g. visible at `/docs`). 

1825 

1826 Read more about it in the 

1827 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). 

1828 """ 

1829 ), 

1830 ] = True, 

1831 response_class: Annotated[ 

1832 type[Response], 

1833 Doc( 

1834 """ 

1835 Response class to be used for this *path operation*. 

1836 

1837 This will not be used if you return a response directly. 

1838 

1839 Read more about it in the 

1840 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#redirectresponse). 

1841 """ 

1842 ), 

1843 ] = Default(JSONResponse), 

1844 name: Annotated[ 

1845 str | None, 

1846 Doc( 

1847 """ 

1848 Name for this *path operation*. Only used internally. 

1849 """ 

1850 ), 

1851 ] = None, 

1852 callbacks: Annotated[ 

1853 list[BaseRoute] | None, 

1854 Doc( 

1855 """ 

1856 List of *path operations* that will be used as OpenAPI callbacks. 

1857 

1858 This is only for OpenAPI documentation, the callbacks won't be used 

1859 directly. 

1860 

1861 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

1862 

1863 Read more about it in the 

1864 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/). 

1865 """ 

1866 ), 

1867 ] = None, 

1868 openapi_extra: Annotated[ 

1869 dict[str, Any] | None, 

1870 Doc( 

1871 """ 

1872 Extra metadata to be included in the OpenAPI schema for this *path 

1873 operation*. 

1874 

1875 Read more about it in the 

1876 [FastAPI docs for Path Operation Advanced Configuration](https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema). 

1877 """ 

1878 ), 

1879 ] = None, 

1880 generate_unique_id_function: Annotated[ 

1881 Callable[[routing.APIRoute], str], 

1882 Doc( 

1883 """ 

1884 Customize the function used to generate unique IDs for the *path 

1885 operations* shown in the generated OpenAPI. 

1886 

1887 This is particularly useful when automatically generating clients or 

1888 SDKs for your API. 

1889 

1890 Read more about it in the 

1891 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

1892 """ 

1893 ), 

1894 ] = Default(generate_unique_id), 

1895 ) -> Callable[[DecoratedCallable], DecoratedCallable]: 

1896 """ 

1897 Add a *path operation* using an HTTP GET operation. 

1898 

1899 ## Example 

1900 

1901 ```python 

1902 from fastapi import FastAPI 

1903 

1904 app = FastAPI() 

1905 

1906 @app.get("/items/") 

1907 def read_items(): 

1908 return [{"name": "Empanada"}, {"name": "Arepa"}] 

1909 ``` 

1910 """ 

1911 return self.router.get( 3a .v =BbDb =e ?e @e [e ]e ^e _e `e Ib Jb Kb Lb ?BbMb Nb {e |e }e ~e af Ob bf cf df ef ff gf hf if jf kf lf h i j k ~ ab bb z A cb db xf zf Af X Ub Vb Wb Xb Yb Zb 0b 1b 2b 3b Df Ef Ff Gf Hf 4b 5b 8b eb { fb !b gb If Jf hb B Kf Lf Mf Nf Of Pf %b Qf Rf Sf Tf Xf Yf sd td ud vd wd xd e pd 'b kg lg mg ng og pg qg rg sg tg ug vg ]c ^c yd zd Ad Bd @Bb[BbCd Dd yg zg Ag Bg Cg Dg Gg Hg Ed Fd Ig Jg Kg Lg Mg Ng Og Pg Qg Rg Sg Tg Ug Vg Wg Xg Yg Zg 0g 1g 2g 3g 4g 5g 6g 7g 8g 9g (b !g #g $g %g 'g (g )g *g +g ,g -g )b .g /g :g ;g =g ?g @g [g Gd Hd Id }g ~g ah bh ch dh eh fh gh Jd Kd hh ih jh kh lh mh nh oh ph qh rh sh th uh vh wh xh yh zh Ah Bh Ch Ld Md Nd Od Ph Qh Rh Sh Th Uh Vh Wh Xh Yh Zh 0h 1h 2h 3h 4h 5h 6h 7h 8h 9h !h #h $h %h 'h (h )h *h +h ,h -h .h /h :h ;h =h ?h @h [h ]h ^h _h `h {h |h }h ~h ai bi ci di ei fi gi hi ii ji ki li mi ni oi pi qi ri si ti ui vi wi xi yi zi Ai Bi Ci Di Ei Fi Gi Hi Ii Ji Ki Li Mi Ni Oi Pi Qi Pd Qd Rd Sd Td Ud *i Vd Wd :i ;i =i ?i @i [i ]i ^i _i nj oj pj qj rj sj tj uj Xd Yd Zd 0d 1d 2d 3d 4d 5d 6d 7d vj wj xj yj zj Aj Bj Cj 8d 9d !d #d Dj Ej Fj Gj Hj Ij Jj Mj Nj Oj Pj Qj Rj Sj . / : ; 9 ! # $ Tj Uj Vj Wj *b $d %d ib Zj 0j }c ~c ad bd cd b c ]v ]Bb:b 4j 5j 6j 7j 8j 9j !j #j [b ]b ^b _b ^Bb`b {b $j %j 'j (j )j |b *j +j ,j -j .j /j :j ;j =j ?j @j l m n o jb kb lb I J mb nb ck ek fk 2 dc ec fc gc hc ic jc kc lc mc ik jk kk lk mk nc oc rc ob | pb tc qb nk ok rb K pk qk rk sk tk uk wc vk wk xk yk Bk Ck 'd (d )d *d +d f qd xc :k ;k =k ?k @k [k ]k ^k _k `k _c `c ,d -d .d /d _Bb`Bb:d }k ~k al bl cl dl el fl gl hl kl ll ;d =d ml nl ol pl ql rl sl tl ul vl wl xl yl zl Al Bl Cl Dl El Fl Gl Hl Il Jl Kl Ll Ml Nl Ol Pl yc Ql Rl Sl Tl Ul Vl Wl Xl Yl Zl zc 0l 1l 2l 3l 4l 5l 6l 7l ?d @d [d )l *l +l ,l -l .l /l :l ;l =l ]d ^d ?l @l [l ]l ^l _l `l {l |l }l ~l am bm cm dm em fm gm hm im jm km lm mm _d `d {d |d ym zm Am Bm Cm Dm Em Fm Gm Hm Im Jm Km Lm Mm Nm Om Pm Qm Rm Sm Tm Um Vm Wm Xm Ym Zm 0m 1m 2m 3m 4m 5m 6m 7m 8m 9m !m #m $m %m 'm (m )m *m +m ,m -m .m /m :m ;m =m ?m @m [m ]m ^m _m `m {m |m }m ~m an bn cn dn en fn gn hn in jn kn ln mn nn on pn }d ~d ae be Pn Qn ce de ee fe Xn Yn Zn 0n 1n 2n 3n 4n 5n ,n -n .n /n ge he ie je ke le me ne oe pe :n ;n =n ?n @n [n ]n ^n qe re se te _n `n {n |n }n ~n ao bo eo fo go ho io jo ko = ? @ [ % ' ( ) lo mo no oo po qo Ac ue ve sb to uo vo wo dd ed fd gd d aw {BbGc Ao Bo Co Do Eo Fo Go Ho Lc Mc Nc Oc |BbPc Qc Io Jo Ko Lo Mo Rc No Oo Po Qo Ro So To Uo Vo Wo Xo p q r s tb ub vb R S wb xb 9o #o $o 7 Xc Yc Zc 0c 1c 2c 3c 4c 5c 6c (o )o *o +o ,o 7c 8c #c yb } zb %c Ab -o .o Bb T /o :o ;o =o ?o @o )c [o ]o `o we xe ye g rd *c wp xp yp zp Ap Bp {c |c }Bbze ~BbAe aCbbCbBe Ep Fp Gp Hp Ip Kp Ce Lp Mp Np Op Pp Qp Rp Sp Tp Up Vp Wp Xp Yp Zp 0p 1p 2p +c 3p 4p 5p 6p 7p 8p 9p !p ,c #p $p %p 'p De Ee -p .p /p :p ;p Fe =p ?p @p [p ]p ^p _p `p {p |p }p ~p Ge He hq iq jq kq lq mq nq oq pq qq rq sq tq uq vq wq xq yq zq Aq Bq Cq Dq Eq Fq Gq Hq Iq Jq Kq Lq Mq Nq Oq Pq Qq Rq Sq Tq Uq Vq Wq Xq Yq Zq 0q 1q 2q 3q 4q 5q 6q 7q 8q 9q !q #q $q %q 'q (q )q *q +q ,q -q .q /q :q ;q =q ?q @q [q ]q ^q _q `q {q |q }q ~q ar br cr dr er fr gr hr ir jr Ie Je Ke Le Me Ne Oe Pe Qe Re Se Te Yr Zr Ue Ve We Xe Ye Ze 6r 7r 8r 9r !r #r $r %r 'r (r )r *r +r bs cs ds es fs gs hs is js ks 0e 1e 2e 3e 4e 5e 6e 7e 8e 9e !e #e $e %e 'e (e )e ls ms ns os ps qs rs ss ts us vs *e +e ,e -e .e /e ws xs ys zs As Bs Cs Ds Es Fs Is Js Ks Ls Ms Ns Os Ps Qs Rs ] ^ _ ` * + , - Ss Ts Us Vs Ws Xs Ys Zs -c :e ;e Cb 3s 4s 5s 6s 7s 8s hd id jd kd ld md nd od

1912 path, 

1913 response_model=response_model, 

1914 status_code=status_code, 

1915 tags=tags, 

1916 dependencies=dependencies, 

1917 summary=summary, 

1918 description=description, 

1919 response_description=response_description, 

1920 responses=responses, 

1921 deprecated=deprecated, 

1922 operation_id=operation_id, 

1923 response_model_include=response_model_include, 

1924 response_model_exclude=response_model_exclude, 

1925 response_model_by_alias=response_model_by_alias, 

1926 response_model_exclude_unset=response_model_exclude_unset, 

1927 response_model_exclude_defaults=response_model_exclude_defaults, 

1928 response_model_exclude_none=response_model_exclude_none, 

1929 include_in_schema=include_in_schema, 

1930 response_class=response_class, 

1931 name=name, 

1932 callbacks=callbacks, 

1933 openapi_extra=openapi_extra, 

1934 generate_unique_id_function=generate_unique_id_function, 

1935 ) 

1936 

1937 def put( 1abcd

1938 self, 

1939 path: Annotated[ 

1940 str, 

1941 Doc( 

1942 """ 

1943 The URL path to be used for this *path operation*. 

1944 

1945 For example, in `http://example.com/items`, the path is `/items`. 

1946 """ 

1947 ), 

1948 ], 

1949 *, 

1950 response_model: Annotated[ 

1951 Any, 

1952 Doc( 

1953 """ 

1954 The type to use for the response. 

1955 

1956 It could be any valid Pydantic *field* type. So, it doesn't have to 

1957 be a Pydantic model, it could be other things, like a `list`, `dict`, 

1958 etc. 

1959 

1960 It will be used for: 

1961 

1962 * Documentation: the generated OpenAPI (and the UI at `/docs`) will 

1963 show it as the response (JSON Schema). 

1964 * Serialization: you could return an arbitrary object and the 

1965 `response_model` would be used to serialize that object into the 

1966 corresponding JSON. 

1967 * Filtering: the JSON sent to the client will only contain the data 

1968 (fields) defined in the `response_model`. If you returned an object 

1969 that contains an attribute `password` but the `response_model` does 

1970 not include that field, the JSON sent to the client would not have 

1971 that `password`. 

1972 * Validation: whatever you return will be serialized with the 

1973 `response_model`, converting any data as necessary to generate the 

1974 corresponding JSON. But if the data in the object returned is not 

1975 valid, that would mean a violation of the contract with the client, 

1976 so it's an error from the API developer. So, FastAPI will raise an 

1977 error and return a 500 error code (Internal Server Error). 

1978 

1979 Read more about it in the 

1980 [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/). 

1981 """ 

1982 ), 

1983 ] = Default(None), 

1984 status_code: Annotated[ 

1985 int | None, 

1986 Doc( 

1987 """ 

1988 The default status code to be used for the response. 

1989 

1990 You could override the status code by returning a response directly. 

1991 

1992 Read more about it in the 

1993 [FastAPI docs for Response Status Code](https://fastapi.tiangolo.com/tutorial/response-status-code/). 

1994 """ 

1995 ), 

1996 ] = None, 

1997 tags: Annotated[ 

1998 list[str | Enum] | None, 

1999 Doc( 

2000 """ 

2001 A list of tags to be applied to the *path operation*. 

2002 

2003 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2004 

2005 Read more about it in the 

2006 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags). 

2007 """ 

2008 ), 

2009 ] = None, 

2010 dependencies: Annotated[ 

2011 Sequence[Depends] | None, 

2012 Doc( 

2013 """ 

2014 A list of dependencies (using `Depends()`) to be applied to the 

2015 *path operation*. 

2016 

2017 Read more about it in the 

2018 [FastAPI docs for Dependencies in path operation decorators](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/). 

2019 """ 

2020 ), 

2021 ] = None, 

2022 summary: Annotated[ 

2023 str | None, 

2024 Doc( 

2025 """ 

2026 A summary for the *path operation*. 

2027 

2028 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2029 

2030 Read more about it in the 

2031 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

2032 """ 

2033 ), 

2034 ] = None, 

2035 description: Annotated[ 

2036 str | None, 

2037 Doc( 

2038 """ 

2039 A description for the *path operation*. 

2040 

2041 If not provided, it will be extracted automatically from the docstring 

2042 of the *path operation function*. 

2043 

2044 It can contain Markdown. 

2045 

2046 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2047 

2048 Read more about it in the 

2049 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

2050 """ 

2051 ), 

2052 ] = None, 

2053 response_description: Annotated[ 

2054 str, 

2055 Doc( 

2056 """ 

2057 The description for the default response. 

2058 

2059 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2060 """ 

2061 ), 

2062 ] = "Successful Response", 

2063 responses: Annotated[ 

2064 dict[int | str, dict[str, Any]] | None, 

2065 Doc( 

2066 """ 

2067 Additional responses that could be returned by this *path operation*. 

2068 

2069 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2070 """ 

2071 ), 

2072 ] = None, 

2073 deprecated: Annotated[ 

2074 bool | None, 

2075 Doc( 

2076 """ 

2077 Mark this *path operation* as deprecated. 

2078 

2079 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2080 """ 

2081 ), 

2082 ] = None, 

2083 operation_id: Annotated[ 

2084 str | None, 

2085 Doc( 

2086 """ 

2087 Custom operation ID to be used by this *path operation*. 

2088 

2089 By default, it is generated automatically. 

2090 

2091 If you provide a custom operation ID, you need to make sure it is 

2092 unique for the whole API. 

2093 

2094 You can customize the 

2095 operation ID generation with the parameter 

2096 `generate_unique_id_function` in the `FastAPI` class. 

2097 

2098 Read more about it in the 

2099 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

2100 """ 

2101 ), 

2102 ] = None, 

2103 response_model_include: Annotated[ 

2104 IncEx | None, 

2105 Doc( 

2106 """ 

2107 Configuration passed to Pydantic to include only certain fields in the 

2108 response data. 

2109 

2110 Read more about it in the 

2111 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

2112 """ 

2113 ), 

2114 ] = None, 

2115 response_model_exclude: Annotated[ 

2116 IncEx | None, 

2117 Doc( 

2118 """ 

2119 Configuration passed to Pydantic to exclude certain fields in the 

2120 response data. 

2121 

2122 Read more about it in the 

2123 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

2124 """ 

2125 ), 

2126 ] = None, 

2127 response_model_by_alias: Annotated[ 

2128 bool, 

2129 Doc( 

2130 """ 

2131 Configuration passed to Pydantic to define if the response model 

2132 should be serialized by alias when an alias is used. 

2133 

2134 Read more about it in the 

2135 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

2136 """ 

2137 ), 

2138 ] = True, 

2139 response_model_exclude_unset: Annotated[ 

2140 bool, 

2141 Doc( 

2142 """ 

2143 Configuration passed to Pydantic to define if the response data 

2144 should have all the fields, including the ones that were not set and 

2145 have their default values. This is different from 

2146 `response_model_exclude_defaults` in that if the fields are set, 

2147 they will be included in the response, even if the value is the same 

2148 as the default. 

2149 

2150 When `True`, default values are omitted from the response. 

2151 

2152 Read more about it in the 

2153 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter). 

2154 """ 

2155 ), 

2156 ] = False, 

2157 response_model_exclude_defaults: Annotated[ 

2158 bool, 

2159 Doc( 

2160 """ 

2161 Configuration passed to Pydantic to define if the response data 

2162 should have all the fields, including the ones that have the same value 

2163 as the default. This is different from `response_model_exclude_unset` 

2164 in that if the fields are set but contain the same default values, 

2165 they will be excluded from the response. 

2166 

2167 When `True`, default values are omitted from the response. 

2168 

2169 Read more about it in the 

2170 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter). 

2171 """ 

2172 ), 

2173 ] = False, 

2174 response_model_exclude_none: Annotated[ 

2175 bool, 

2176 Doc( 

2177 """ 

2178 Configuration passed to Pydantic to define if the response data should 

2179 exclude fields set to `None`. 

2180 

2181 This is much simpler (less smart) than `response_model_exclude_unset` 

2182 and `response_model_exclude_defaults`. You probably want to use one of 

2183 those two instead of this one, as those allow returning `None` values 

2184 when it makes sense. 

2185 

2186 Read more about it in the 

2187 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_exclude_none). 

2188 """ 

2189 ), 

2190 ] = False, 

2191 include_in_schema: Annotated[ 

2192 bool, 

2193 Doc( 

2194 """ 

2195 Include this *path operation* in the generated OpenAPI schema. 

2196 

2197 This affects the generated OpenAPI (e.g. visible at `/docs`). 

2198 

2199 Read more about it in the 

2200 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). 

2201 """ 

2202 ), 

2203 ] = True, 

2204 response_class: Annotated[ 

2205 type[Response], 

2206 Doc( 

2207 """ 

2208 Response class to be used for this *path operation*. 

2209 

2210 This will not be used if you return a response directly. 

2211 

2212 Read more about it in the 

2213 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#redirectresponse). 

2214 """ 

2215 ), 

2216 ] = Default(JSONResponse), 

2217 name: Annotated[ 

2218 str | None, 

2219 Doc( 

2220 """ 

2221 Name for this *path operation*. Only used internally. 

2222 """ 

2223 ), 

2224 ] = None, 

2225 callbacks: Annotated[ 

2226 list[BaseRoute] | None, 

2227 Doc( 

2228 """ 

2229 List of *path operations* that will be used as OpenAPI callbacks. 

2230 

2231 This is only for OpenAPI documentation, the callbacks won't be used 

2232 directly. 

2233 

2234 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2235 

2236 Read more about it in the 

2237 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/). 

2238 """ 

2239 ), 

2240 ] = None, 

2241 openapi_extra: Annotated[ 

2242 dict[str, Any] | None, 

2243 Doc( 

2244 """ 

2245 Extra metadata to be included in the OpenAPI schema for this *path 

2246 operation*. 

2247 

2248 Read more about it in the 

2249 [FastAPI docs for Path Operation Advanced Configuration](https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema). 

2250 """ 

2251 ), 

2252 ] = None, 

2253 generate_unique_id_function: Annotated[ 

2254 Callable[[routing.APIRoute], str], 

2255 Doc( 

2256 """ 

2257 Customize the function used to generate unique IDs for the *path 

2258 operations* shown in the generated OpenAPI. 

2259 

2260 This is particularly useful when automatically generating clients or 

2261 SDKs for your API. 

2262 

2263 Read more about it in the 

2264 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

2265 """ 

2266 ), 

2267 ] = Default(generate_unique_id), 

2268 ) -> Callable[[DecoratedCallable], DecoratedCallable]: 

2269 """ 

2270 Add a *path operation* using an HTTP PUT operation. 

2271 

2272 ## Example 

2273 

2274 ```python 

2275 from fastapi import FastAPI 

2276 from pydantic import BaseModel 

2277 

2278 class Item(BaseModel): 

2279 name: str 

2280 description: str | None = None 

2281 

2282 app = FastAPI() 

2283 

2284 @app.put("/items/{item_id}") 

2285 def replace_item(item_id: str, item: Item): 

2286 return {"message": "Item replaced", "id": item_id} 

2287 ``` 

2288 """ 

2289 return self.router.put( 2a UfVfWf5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgudvd]g^g_g`g)i}i~iajbjcjdjejfjgjhjijjjkjljmjb c zkAkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k)d*d8l9l!l#l$l%lNnOn8n9n!n#n$n%n'n(n)n*n+nd ^o_oapbpcpdpepfpgphpipjpkplpmpnpopppqprpspxe(p)p*pWrXr/r:r;r=r?r@r[r]r^r_r`r{r|r}r~ras

2290 path, 

2291 response_model=response_model, 

2292 status_code=status_code, 

2293 tags=tags, 

2294 dependencies=dependencies, 

2295 summary=summary, 

2296 description=description, 

2297 response_description=response_description, 

2298 responses=responses, 

2299 deprecated=deprecated, 

2300 operation_id=operation_id, 

2301 response_model_include=response_model_include, 

2302 response_model_exclude=response_model_exclude, 

2303 response_model_by_alias=response_model_by_alias, 

2304 response_model_exclude_unset=response_model_exclude_unset, 

2305 response_model_exclude_defaults=response_model_exclude_defaults, 

2306 response_model_exclude_none=response_model_exclude_none, 

2307 include_in_schema=include_in_schema, 

2308 response_class=response_class, 

2309 name=name, 

2310 callbacks=callbacks, 

2311 openapi_extra=openapi_extra, 

2312 generate_unique_id_function=generate_unique_id_function, 

2313 ) 

2314 

2315 def post( 1abcd

2316 self, 

2317 path: Annotated[ 

2318 str, 

2319 Doc( 

2320 """ 

2321 The URL path to be used for this *path operation*. 

2322 

2323 For example, in `http://example.com/items`, the path is `/items`. 

2324 """ 

2325 ), 

2326 ], 

2327 *, 

2328 response_model: Annotated[ 

2329 Any, 

2330 Doc( 

2331 """ 

2332 The type to use for the response. 

2333 

2334 It could be any valid Pydantic *field* type. So, it doesn't have to 

2335 be a Pydantic model, it could be other things, like a `list`, `dict`, 

2336 etc. 

2337 

2338 It will be used for: 

2339 

2340 * Documentation: the generated OpenAPI (and the UI at `/docs`) will 

2341 show it as the response (JSON Schema). 

2342 * Serialization: you could return an arbitrary object and the 

2343 `response_model` would be used to serialize that object into the 

2344 corresponding JSON. 

2345 * Filtering: the JSON sent to the client will only contain the data 

2346 (fields) defined in the `response_model`. If you returned an object 

2347 that contains an attribute `password` but the `response_model` does 

2348 not include that field, the JSON sent to the client would not have 

2349 that `password`. 

2350 * Validation: whatever you return will be serialized with the 

2351 `response_model`, converting any data as necessary to generate the 

2352 corresponding JSON. But if the data in the object returned is not 

2353 valid, that would mean a violation of the contract with the client, 

2354 so it's an error from the API developer. So, FastAPI will raise an 

2355 error and return a 500 error code (Internal Server Error). 

2356 

2357 Read more about it in the 

2358 [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/). 

2359 """ 

2360 ), 

2361 ] = Default(None), 

2362 status_code: Annotated[ 

2363 int | None, 

2364 Doc( 

2365 """ 

2366 The default status code to be used for the response. 

2367 

2368 You could override the status code by returning a response directly. 

2369 

2370 Read more about it in the 

2371 [FastAPI docs for Response Status Code](https://fastapi.tiangolo.com/tutorial/response-status-code/). 

2372 """ 

2373 ), 

2374 ] = None, 

2375 tags: Annotated[ 

2376 list[str | Enum] | None, 

2377 Doc( 

2378 """ 

2379 A list of tags to be applied to the *path operation*. 

2380 

2381 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2382 

2383 Read more about it in the 

2384 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags). 

2385 """ 

2386 ), 

2387 ] = None, 

2388 dependencies: Annotated[ 

2389 Sequence[Depends] | None, 

2390 Doc( 

2391 """ 

2392 A list of dependencies (using `Depends()`) to be applied to the 

2393 *path operation*. 

2394 

2395 Read more about it in the 

2396 [FastAPI docs for Dependencies in path operation decorators](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/). 

2397 """ 

2398 ), 

2399 ] = None, 

2400 summary: Annotated[ 

2401 str | None, 

2402 Doc( 

2403 """ 

2404 A summary for the *path operation*. 

2405 

2406 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2407 

2408 Read more about it in the 

2409 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

2410 """ 

2411 ), 

2412 ] = None, 

2413 description: Annotated[ 

2414 str | None, 

2415 Doc( 

2416 """ 

2417 A description for the *path operation*. 

2418 

2419 If not provided, it will be extracted automatically from the docstring 

2420 of the *path operation function*. 

2421 

2422 It can contain Markdown. 

2423 

2424 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2425 

2426 Read more about it in the 

2427 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

2428 """ 

2429 ), 

2430 ] = None, 

2431 response_description: Annotated[ 

2432 str, 

2433 Doc( 

2434 """ 

2435 The description for the default response. 

2436 

2437 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2438 """ 

2439 ), 

2440 ] = "Successful Response", 

2441 responses: Annotated[ 

2442 dict[int | str, dict[str, Any]] | None, 

2443 Doc( 

2444 """ 

2445 Additional responses that could be returned by this *path operation*. 

2446 

2447 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2448 """ 

2449 ), 

2450 ] = None, 

2451 deprecated: Annotated[ 

2452 bool | None, 

2453 Doc( 

2454 """ 

2455 Mark this *path operation* as deprecated. 

2456 

2457 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2458 """ 

2459 ), 

2460 ] = None, 

2461 operation_id: Annotated[ 

2462 str | None, 

2463 Doc( 

2464 """ 

2465 Custom operation ID to be used by this *path operation*. 

2466 

2467 By default, it is generated automatically. 

2468 

2469 If you provide a custom operation ID, you need to make sure it is 

2470 unique for the whole API. 

2471 

2472 You can customize the 

2473 operation ID generation with the parameter 

2474 `generate_unique_id_function` in the `FastAPI` class. 

2475 

2476 Read more about it in the 

2477 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

2478 """ 

2479 ), 

2480 ] = None, 

2481 response_model_include: Annotated[ 

2482 IncEx | None, 

2483 Doc( 

2484 """ 

2485 Configuration passed to Pydantic to include only certain fields in the 

2486 response data. 

2487 

2488 Read more about it in the 

2489 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

2490 """ 

2491 ), 

2492 ] = None, 

2493 response_model_exclude: Annotated[ 

2494 IncEx | None, 

2495 Doc( 

2496 """ 

2497 Configuration passed to Pydantic to exclude certain fields in the 

2498 response data. 

2499 

2500 Read more about it in the 

2501 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

2502 """ 

2503 ), 

2504 ] = None, 

2505 response_model_by_alias: Annotated[ 

2506 bool, 

2507 Doc( 

2508 """ 

2509 Configuration passed to Pydantic to define if the response model 

2510 should be serialized by alias when an alias is used. 

2511 

2512 Read more about it in the 

2513 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

2514 """ 

2515 ), 

2516 ] = True, 

2517 response_model_exclude_unset: Annotated[ 

2518 bool, 

2519 Doc( 

2520 """ 

2521 Configuration passed to Pydantic to define if the response data 

2522 should have all the fields, including the ones that were not set and 

2523 have their default values. This is different from 

2524 `response_model_exclude_defaults` in that if the fields are set, 

2525 they will be included in the response, even if the value is the same 

2526 as the default. 

2527 

2528 When `True`, default values are omitted from the response. 

2529 

2530 Read more about it in the 

2531 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter). 

2532 """ 

2533 ), 

2534 ] = False, 

2535 response_model_exclude_defaults: Annotated[ 

2536 bool, 

2537 Doc( 

2538 """ 

2539 Configuration passed to Pydantic to define if the response data 

2540 should have all the fields, including the ones that have the same value 

2541 as the default. This is different from `response_model_exclude_unset` 

2542 in that if the fields are set but contain the same default values, 

2543 they will be excluded from the response. 

2544 

2545 When `True`, default values are omitted from the response. 

2546 

2547 Read more about it in the 

2548 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter). 

2549 """ 

2550 ), 

2551 ] = False, 

2552 response_model_exclude_none: Annotated[ 

2553 bool, 

2554 Doc( 

2555 """ 

2556 Configuration passed to Pydantic to define if the response data should 

2557 exclude fields set to `None`. 

2558 

2559 This is much simpler (less smart) than `response_model_exclude_unset` 

2560 and `response_model_exclude_defaults`. You probably want to use one of 

2561 those two instead of this one, as those allow returning `None` values 

2562 when it makes sense. 

2563 

2564 Read more about it in the 

2565 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_exclude_none). 

2566 """ 

2567 ), 

2568 ] = False, 

2569 include_in_schema: Annotated[ 

2570 bool, 

2571 Doc( 

2572 """ 

2573 Include this *path operation* in the generated OpenAPI schema. 

2574 

2575 This affects the generated OpenAPI (e.g. visible at `/docs`). 

2576 

2577 Read more about it in the 

2578 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). 

2579 """ 

2580 ), 

2581 ] = True, 

2582 response_class: Annotated[ 

2583 type[Response], 

2584 Doc( 

2585 """ 

2586 Response class to be used for this *path operation*. 

2587 

2588 This will not be used if you return a response directly. 

2589 

2590 Read more about it in the 

2591 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#redirectresponse). 

2592 """ 

2593 ), 

2594 ] = Default(JSONResponse), 

2595 name: Annotated[ 

2596 str | None, 

2597 Doc( 

2598 """ 

2599 Name for this *path operation*. Only used internally. 

2600 """ 

2601 ), 

2602 ] = None, 

2603 callbacks: Annotated[ 

2604 list[BaseRoute] | None, 

2605 Doc( 

2606 """ 

2607 List of *path operations* that will be used as OpenAPI callbacks. 

2608 

2609 This is only for OpenAPI documentation, the callbacks won't be used 

2610 directly. 

2611 

2612 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2613 

2614 Read more about it in the 

2615 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/). 

2616 """ 

2617 ), 

2618 ] = None, 

2619 openapi_extra: Annotated[ 

2620 dict[str, Any] | None, 

2621 Doc( 

2622 """ 

2623 Extra metadata to be included in the OpenAPI schema for this *path 

2624 operation*. 

2625 

2626 Read more about it in the 

2627 [FastAPI docs for Path Operation Advanced Configuration](https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema). 

2628 """ 

2629 ), 

2630 ] = None, 

2631 generate_unique_id_function: Annotated[ 

2632 Callable[[routing.APIRoute], str], 

2633 Doc( 

2634 """ 

2635 Customize the function used to generate unique IDs for the *path 

2636 operations* shown in the generated OpenAPI. 

2637 

2638 This is particularly useful when automatically generating clients or 

2639 SDKs for your API. 

2640 

2641 Read more about it in the 

2642 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

2643 """ 

2644 ), 

2645 ] = Default(generate_unique_id), 

2646 ) -> Callable[[DecoratedCallable], DecoratedCallable]: 

2647 """ 

2648 Add a *path operation* using an HTTP POST operation. 

2649 

2650 ## Example 

2651 

2652 ```python 

2653 from fastapi import FastAPI 

2654 from pydantic import BaseModel 

2655 

2656 class Item(BaseModel): 

2657 name: str 

2658 description: str | None = None 

2659 

2660 app = FastAPI() 

2661 

2662 @app.post("/items/") 

2663 def create_item(item: Item): 

2664 return {"message": "Item created"} 

2665 ``` 

2666 """ 

2667 return self.router.post( 2a FbGbHbt U u v w x y V Pbmfnfofpfqfrfsftfufvfwf~ abbbz A cbdbyfBfCfQbRbW SbTbhbB Zf0f1f2f3f4fegfggghgigjgydzdAdBdwgxgEgFgEdFd{g|gJdKdLdMdDhEhFhGhHhIhJhKhNdOdLhMhNhOhRiSiTiUiViWiXiYiZi0iPdQdRdSdTdUd1i2i3i4i5i6i7i8i9i!i#i$i%i'i(iVdWd+i,i-i.i/i`i{i|iXdYdZd0d1d2d3d4d5d6d7d8d9d!d#dKjLj. / : ; 9 ! # $ XjYj$d%d+bY 1j2j3j,bb c =b?b@bC Z D E F G H 0 }b[j]j^j_j`j{j|j}j~jakbkjbkblbI J mbnbdkgkhk~bac1 bcccrbK DkEkFkGkHkIk*k+k,k-k.k/k,d-d.d/d{k|kiljl;d=d'l(l]d^d_d`dnmompmqmrmsmtm{d|dumvmwmxmqnrnsntnunvnwnxnynzn}d~daebeAnBnCnDnEnFnGnHnInJnKnLnMncedeeefeRnSnTnUnVnWn6n7ngeheiejekelemeneoepeqeresetecodo= ? @ [ % ' ( ) rosoueveBc3 xoyozoCcd IcJcKcL 4 M N O P Q 5 ScYoZo0o1o2o3o4o5o6o7o8otbubvbR S wbxb!o%o'oTcUc6 VcWcBbT {o|o}o~otpupvpzeAeCpDpJpCe+p,pFeGeaqbqcqdqHeeqfqgqkrlrmrnrorprqrrrsrtrurvrwrxryrzrIeJeKeLeMeNeOePeQeReSeTeArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrUeVeWeXeYeZe0r1r2r3r4r5r,r-r.r0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e/eGsHs] ^ _ ` * + , - 0s1s2s:e;e.c8 9s!s#s/c

2668 path, 

2669 response_model=response_model, 

2670 status_code=status_code, 

2671 tags=tags, 

2672 dependencies=dependencies, 

2673 summary=summary, 

2674 description=description, 

2675 response_description=response_description, 

2676 responses=responses, 

2677 deprecated=deprecated, 

2678 operation_id=operation_id, 

2679 response_model_include=response_model_include, 

2680 response_model_exclude=response_model_exclude, 

2681 response_model_by_alias=response_model_by_alias, 

2682 response_model_exclude_unset=response_model_exclude_unset, 

2683 response_model_exclude_defaults=response_model_exclude_defaults, 

2684 response_model_exclude_none=response_model_exclude_none, 

2685 include_in_schema=include_in_schema, 

2686 response_class=response_class, 

2687 name=name, 

2688 callbacks=callbacks, 

2689 openapi_extra=openapi_extra, 

2690 generate_unique_id_function=generate_unique_id_function, 

2691 ) 

2692 

2693 def delete( 1abcd

2694 self, 

2695 path: Annotated[ 

2696 str, 

2697 Doc( 

2698 """ 

2699 The URL path to be used for this *path operation*. 

2700 

2701 For example, in `http://example.com/items`, the path is `/items`. 

2702 """ 

2703 ), 

2704 ], 

2705 *, 

2706 response_model: Annotated[ 

2707 Any, 

2708 Doc( 

2709 """ 

2710 The type to use for the response. 

2711 

2712 It could be any valid Pydantic *field* type. So, it doesn't have to 

2713 be a Pydantic model, it could be other things, like a `list`, `dict`, 

2714 etc. 

2715 

2716 It will be used for: 

2717 

2718 * Documentation: the generated OpenAPI (and the UI at `/docs`) will 

2719 show it as the response (JSON Schema). 

2720 * Serialization: you could return an arbitrary object and the 

2721 `response_model` would be used to serialize that object into the 

2722 corresponding JSON. 

2723 * Filtering: the JSON sent to the client will only contain the data 

2724 (fields) defined in the `response_model`. If you returned an object 

2725 that contains an attribute `password` but the `response_model` does 

2726 not include that field, the JSON sent to the client would not have 

2727 that `password`. 

2728 * Validation: whatever you return will be serialized with the 

2729 `response_model`, converting any data as necessary to generate the 

2730 corresponding JSON. But if the data in the object returned is not 

2731 valid, that would mean a violation of the contract with the client, 

2732 so it's an error from the API developer. So, FastAPI will raise an 

2733 error and return a 500 error code (Internal Server Error). 

2734 

2735 Read more about it in the 

2736 [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/). 

2737 """ 

2738 ), 

2739 ] = Default(None), 

2740 status_code: Annotated[ 

2741 int | None, 

2742 Doc( 

2743 """ 

2744 The default status code to be used for the response. 

2745 

2746 You could override the status code by returning a response directly. 

2747 

2748 Read more about it in the 

2749 [FastAPI docs for Response Status Code](https://fastapi.tiangolo.com/tutorial/response-status-code/). 

2750 """ 

2751 ), 

2752 ] = None, 

2753 tags: Annotated[ 

2754 list[str | Enum] | None, 

2755 Doc( 

2756 """ 

2757 A list of tags to be applied to the *path operation*. 

2758 

2759 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2760 

2761 Read more about it in the 

2762 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags). 

2763 """ 

2764 ), 

2765 ] = None, 

2766 dependencies: Annotated[ 

2767 Sequence[Depends] | None, 

2768 Doc( 

2769 """ 

2770 A list of dependencies (using `Depends()`) to be applied to the 

2771 *path operation*. 

2772 

2773 Read more about it in the 

2774 [FastAPI docs for Dependencies in path operation decorators](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/). 

2775 """ 

2776 ), 

2777 ] = None, 

2778 summary: Annotated[ 

2779 str | None, 

2780 Doc( 

2781 """ 

2782 A summary for the *path operation*. 

2783 

2784 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2785 

2786 Read more about it in the 

2787 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

2788 """ 

2789 ), 

2790 ] = None, 

2791 description: Annotated[ 

2792 str | None, 

2793 Doc( 

2794 """ 

2795 A description for the *path operation*. 

2796 

2797 If not provided, it will be extracted automatically from the docstring 

2798 of the *path operation function*. 

2799 

2800 It can contain Markdown. 

2801 

2802 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2803 

2804 Read more about it in the 

2805 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

2806 """ 

2807 ), 

2808 ] = None, 

2809 response_description: Annotated[ 

2810 str, 

2811 Doc( 

2812 """ 

2813 The description for the default response. 

2814 

2815 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2816 """ 

2817 ), 

2818 ] = "Successful Response", 

2819 responses: Annotated[ 

2820 dict[int | str, dict[str, Any]] | None, 

2821 Doc( 

2822 """ 

2823 Additional responses that could be returned by this *path operation*. 

2824 

2825 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2826 """ 

2827 ), 

2828 ] = None, 

2829 deprecated: Annotated[ 

2830 bool | None, 

2831 Doc( 

2832 """ 

2833 Mark this *path operation* as deprecated. 

2834 

2835 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2836 """ 

2837 ), 

2838 ] = None, 

2839 operation_id: Annotated[ 

2840 str | None, 

2841 Doc( 

2842 """ 

2843 Custom operation ID to be used by this *path operation*. 

2844 

2845 By default, it is generated automatically. 

2846 

2847 If you provide a custom operation ID, you need to make sure it is 

2848 unique for the whole API. 

2849 

2850 You can customize the 

2851 operation ID generation with the parameter 

2852 `generate_unique_id_function` in the `FastAPI` class. 

2853 

2854 Read more about it in the 

2855 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

2856 """ 

2857 ), 

2858 ] = None, 

2859 response_model_include: Annotated[ 

2860 IncEx | None, 

2861 Doc( 

2862 """ 

2863 Configuration passed to Pydantic to include only certain fields in the 

2864 response data. 

2865 

2866 Read more about it in the 

2867 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

2868 """ 

2869 ), 

2870 ] = None, 

2871 response_model_exclude: Annotated[ 

2872 IncEx | None, 

2873 Doc( 

2874 """ 

2875 Configuration passed to Pydantic to exclude certain fields in the 

2876 response data. 

2877 

2878 Read more about it in the 

2879 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

2880 """ 

2881 ), 

2882 ] = None, 

2883 response_model_by_alias: Annotated[ 

2884 bool, 

2885 Doc( 

2886 """ 

2887 Configuration passed to Pydantic to define if the response model 

2888 should be serialized by alias when an alias is used. 

2889 

2890 Read more about it in the 

2891 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

2892 """ 

2893 ), 

2894 ] = True, 

2895 response_model_exclude_unset: Annotated[ 

2896 bool, 

2897 Doc( 

2898 """ 

2899 Configuration passed to Pydantic to define if the response data 

2900 should have all the fields, including the ones that were not set and 

2901 have their default values. This is different from 

2902 `response_model_exclude_defaults` in that if the fields are set, 

2903 they will be included in the response, even if the value is the same 

2904 as the default. 

2905 

2906 When `True`, default values are omitted from the response. 

2907 

2908 Read more about it in the 

2909 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter). 

2910 """ 

2911 ), 

2912 ] = False, 

2913 response_model_exclude_defaults: Annotated[ 

2914 bool, 

2915 Doc( 

2916 """ 

2917 Configuration passed to Pydantic to define if the response data 

2918 should have all the fields, including the ones that have the same value 

2919 as the default. This is different from `response_model_exclude_unset` 

2920 in that if the fields are set but contain the same default values, 

2921 they will be excluded from the response. 

2922 

2923 When `True`, default values are omitted from the response. 

2924 

2925 Read more about it in the 

2926 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter). 

2927 """ 

2928 ), 

2929 ] = False, 

2930 response_model_exclude_none: Annotated[ 

2931 bool, 

2932 Doc( 

2933 """ 

2934 Configuration passed to Pydantic to define if the response data should 

2935 exclude fields set to `None`. 

2936 

2937 This is much simpler (less smart) than `response_model_exclude_unset` 

2938 and `response_model_exclude_defaults`. You probably want to use one of 

2939 those two instead of this one, as those allow returning `None` values 

2940 when it makes sense. 

2941 

2942 Read more about it in the 

2943 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_exclude_none). 

2944 """ 

2945 ), 

2946 ] = False, 

2947 include_in_schema: Annotated[ 

2948 bool, 

2949 Doc( 

2950 """ 

2951 Include this *path operation* in the generated OpenAPI schema. 

2952 

2953 This affects the generated OpenAPI (e.g. visible at `/docs`). 

2954 

2955 Read more about it in the 

2956 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). 

2957 """ 

2958 ), 

2959 ] = True, 

2960 response_class: Annotated[ 

2961 type[Response], 

2962 Doc( 

2963 """ 

2964 Response class to be used for this *path operation*. 

2965 

2966 This will not be used if you return a response directly. 

2967 

2968 Read more about it in the 

2969 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#redirectresponse). 

2970 """ 

2971 ), 

2972 ] = Default(JSONResponse), 

2973 name: Annotated[ 

2974 str | None, 

2975 Doc( 

2976 """ 

2977 Name for this *path operation*. Only used internally. 

2978 """ 

2979 ), 

2980 ] = None, 

2981 callbacks: Annotated[ 

2982 list[BaseRoute] | None, 

2983 Doc( 

2984 """ 

2985 List of *path operations* that will be used as OpenAPI callbacks. 

2986 

2987 This is only for OpenAPI documentation, the callbacks won't be used 

2988 directly. 

2989 

2990 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

2991 

2992 Read more about it in the 

2993 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/). 

2994 """ 

2995 ), 

2996 ] = None, 

2997 openapi_extra: Annotated[ 

2998 dict[str, Any] | None, 

2999 Doc( 

3000 """ 

3001 Extra metadata to be included in the OpenAPI schema for this *path 

3002 operation*. 

3003 

3004 Read more about it in the 

3005 [FastAPI docs for Path Operation Advanced Configuration](https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema). 

3006 """ 

3007 ), 

3008 ] = None, 

3009 generate_unique_id_function: Annotated[ 

3010 Callable[[routing.APIRoute], str], 

3011 Doc( 

3012 """ 

3013 Customize the function used to generate unique IDs for the *path 

3014 operations* shown in the generated OpenAPI. 

3015 

3016 This is particularly useful when automatically generating clients or 

3017 SDKs for your API. 

3018 

3019 Read more about it in the 

3020 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

3021 """ 

3022 ), 

3023 ] = Default(generate_unique_id), 

3024 ) -> Callable[[DecoratedCallable], DecoratedCallable]: 

3025 """ 

3026 Add a *path operation* using an HTTP DELETE operation. 

3027 

3028 ## Example 

3029 

3030 ```python 

3031 from fastapi import FastAPI 

3032 

3033 app = FastAPI() 

3034 

3035 @app.delete("/items/{item_id}") 

3036 def delete_item(item_id: str): 

3037 return {"message": "Item deleted"} 

3038 ``` 

3039 """ 

3040 return self.router.delete( 1a./:;9!#$bc=?@[%'()d]^_`*+,-

3041 path, 

3042 response_model=response_model, 

3043 status_code=status_code, 

3044 tags=tags, 

3045 dependencies=dependencies, 

3046 summary=summary, 

3047 description=description, 

3048 response_description=response_description, 

3049 responses=responses, 

3050 deprecated=deprecated, 

3051 operation_id=operation_id, 

3052 response_model_include=response_model_include, 

3053 response_model_exclude=response_model_exclude, 

3054 response_model_by_alias=response_model_by_alias, 

3055 response_model_exclude_unset=response_model_exclude_unset, 

3056 response_model_exclude_defaults=response_model_exclude_defaults, 

3057 response_model_exclude_none=response_model_exclude_none, 

3058 include_in_schema=include_in_schema, 

3059 response_class=response_class, 

3060 name=name, 

3061 callbacks=callbacks, 

3062 openapi_extra=openapi_extra, 

3063 generate_unique_id_function=generate_unique_id_function, 

3064 ) 

3065 

3066 def options( 1abcd

3067 self, 

3068 path: Annotated[ 

3069 str, 

3070 Doc( 

3071 """ 

3072 The URL path to be used for this *path operation*. 

3073 

3074 For example, in `http://example.com/items`, the path is `/items`. 

3075 """ 

3076 ), 

3077 ], 

3078 *, 

3079 response_model: Annotated[ 

3080 Any, 

3081 Doc( 

3082 """ 

3083 The type to use for the response. 

3084 

3085 It could be any valid Pydantic *field* type. So, it doesn't have to 

3086 be a Pydantic model, it could be other things, like a `list`, `dict`, 

3087 etc. 

3088 

3089 It will be used for: 

3090 

3091 * Documentation: the generated OpenAPI (and the UI at `/docs`) will 

3092 show it as the response (JSON Schema). 

3093 * Serialization: you could return an arbitrary object and the 

3094 `response_model` would be used to serialize that object into the 

3095 corresponding JSON. 

3096 * Filtering: the JSON sent to the client will only contain the data 

3097 (fields) defined in the `response_model`. If you returned an object 

3098 that contains an attribute `password` but the `response_model` does 

3099 not include that field, the JSON sent to the client would not have 

3100 that `password`. 

3101 * Validation: whatever you return will be serialized with the 

3102 `response_model`, converting any data as necessary to generate the 

3103 corresponding JSON. But if the data in the object returned is not 

3104 valid, that would mean a violation of the contract with the client, 

3105 so it's an error from the API developer. So, FastAPI will raise an 

3106 error and return a 500 error code (Internal Server Error). 

3107 

3108 Read more about it in the 

3109 [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/). 

3110 """ 

3111 ), 

3112 ] = Default(None), 

3113 status_code: Annotated[ 

3114 int | None, 

3115 Doc( 

3116 """ 

3117 The default status code to be used for the response. 

3118 

3119 You could override the status code by returning a response directly. 

3120 

3121 Read more about it in the 

3122 [FastAPI docs for Response Status Code](https://fastapi.tiangolo.com/tutorial/response-status-code/). 

3123 """ 

3124 ), 

3125 ] = None, 

3126 tags: Annotated[ 

3127 list[str | Enum] | None, 

3128 Doc( 

3129 """ 

3130 A list of tags to be applied to the *path operation*. 

3131 

3132 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3133 

3134 Read more about it in the 

3135 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags). 

3136 """ 

3137 ), 

3138 ] = None, 

3139 dependencies: Annotated[ 

3140 Sequence[Depends] | None, 

3141 Doc( 

3142 """ 

3143 A list of dependencies (using `Depends()`) to be applied to the 

3144 *path operation*. 

3145 

3146 Read more about it in the 

3147 [FastAPI docs for Dependencies in path operation decorators](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/). 

3148 """ 

3149 ), 

3150 ] = None, 

3151 summary: Annotated[ 

3152 str | None, 

3153 Doc( 

3154 """ 

3155 A summary for the *path operation*. 

3156 

3157 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3158 

3159 Read more about it in the 

3160 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

3161 """ 

3162 ), 

3163 ] = None, 

3164 description: Annotated[ 

3165 str | None, 

3166 Doc( 

3167 """ 

3168 A description for the *path operation*. 

3169 

3170 If not provided, it will be extracted automatically from the docstring 

3171 of the *path operation function*. 

3172 

3173 It can contain Markdown. 

3174 

3175 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3176 

3177 Read more about it in the 

3178 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

3179 """ 

3180 ), 

3181 ] = None, 

3182 response_description: Annotated[ 

3183 str, 

3184 Doc( 

3185 """ 

3186 The description for the default response. 

3187 

3188 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3189 """ 

3190 ), 

3191 ] = "Successful Response", 

3192 responses: Annotated[ 

3193 dict[int | str, dict[str, Any]] | None, 

3194 Doc( 

3195 """ 

3196 Additional responses that could be returned by this *path operation*. 

3197 

3198 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3199 """ 

3200 ), 

3201 ] = None, 

3202 deprecated: Annotated[ 

3203 bool | None, 

3204 Doc( 

3205 """ 

3206 Mark this *path operation* as deprecated. 

3207 

3208 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3209 """ 

3210 ), 

3211 ] = None, 

3212 operation_id: Annotated[ 

3213 str | None, 

3214 Doc( 

3215 """ 

3216 Custom operation ID to be used by this *path operation*. 

3217 

3218 By default, it is generated automatically. 

3219 

3220 If you provide a custom operation ID, you need to make sure it is 

3221 unique for the whole API. 

3222 

3223 You can customize the 

3224 operation ID generation with the parameter 

3225 `generate_unique_id_function` in the `FastAPI` class. 

3226 

3227 Read more about it in the 

3228 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

3229 """ 

3230 ), 

3231 ] = None, 

3232 response_model_include: Annotated[ 

3233 IncEx | None, 

3234 Doc( 

3235 """ 

3236 Configuration passed to Pydantic to include only certain fields in the 

3237 response data. 

3238 

3239 Read more about it in the 

3240 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

3241 """ 

3242 ), 

3243 ] = None, 

3244 response_model_exclude: Annotated[ 

3245 IncEx | None, 

3246 Doc( 

3247 """ 

3248 Configuration passed to Pydantic to exclude certain fields in the 

3249 response data. 

3250 

3251 Read more about it in the 

3252 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

3253 """ 

3254 ), 

3255 ] = None, 

3256 response_model_by_alias: Annotated[ 

3257 bool, 

3258 Doc( 

3259 """ 

3260 Configuration passed to Pydantic to define if the response model 

3261 should be serialized by alias when an alias is used. 

3262 

3263 Read more about it in the 

3264 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

3265 """ 

3266 ), 

3267 ] = True, 

3268 response_model_exclude_unset: Annotated[ 

3269 bool, 

3270 Doc( 

3271 """ 

3272 Configuration passed to Pydantic to define if the response data 

3273 should have all the fields, including the ones that were not set and 

3274 have their default values. This is different from 

3275 `response_model_exclude_defaults` in that if the fields are set, 

3276 they will be included in the response, even if the value is the same 

3277 as the default. 

3278 

3279 When `True`, default values are omitted from the response. 

3280 

3281 Read more about it in the 

3282 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter). 

3283 """ 

3284 ), 

3285 ] = False, 

3286 response_model_exclude_defaults: Annotated[ 

3287 bool, 

3288 Doc( 

3289 """ 

3290 Configuration passed to Pydantic to define if the response data 

3291 should have all the fields, including the ones that have the same value 

3292 as the default. This is different from `response_model_exclude_unset` 

3293 in that if the fields are set but contain the same default values, 

3294 they will be excluded from the response. 

3295 

3296 When `True`, default values are omitted from the response. 

3297 

3298 Read more about it in the 

3299 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter). 

3300 """ 

3301 ), 

3302 ] = False, 

3303 response_model_exclude_none: Annotated[ 

3304 bool, 

3305 Doc( 

3306 """ 

3307 Configuration passed to Pydantic to define if the response data should 

3308 exclude fields set to `None`. 

3309 

3310 This is much simpler (less smart) than `response_model_exclude_unset` 

3311 and `response_model_exclude_defaults`. You probably want to use one of 

3312 those two instead of this one, as those allow returning `None` values 

3313 when it makes sense. 

3314 

3315 Read more about it in the 

3316 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_exclude_none). 

3317 """ 

3318 ), 

3319 ] = False, 

3320 include_in_schema: Annotated[ 

3321 bool, 

3322 Doc( 

3323 """ 

3324 Include this *path operation* in the generated OpenAPI schema. 

3325 

3326 This affects the generated OpenAPI (e.g. visible at `/docs`). 

3327 

3328 Read more about it in the 

3329 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). 

3330 """ 

3331 ), 

3332 ] = True, 

3333 response_class: Annotated[ 

3334 type[Response], 

3335 Doc( 

3336 """ 

3337 Response class to be used for this *path operation*. 

3338 

3339 This will not be used if you return a response directly. 

3340 

3341 Read more about it in the 

3342 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#redirectresponse). 

3343 """ 

3344 ), 

3345 ] = Default(JSONResponse), 

3346 name: Annotated[ 

3347 str | None, 

3348 Doc( 

3349 """ 

3350 Name for this *path operation*. Only used internally. 

3351 """ 

3352 ), 

3353 ] = None, 

3354 callbacks: Annotated[ 

3355 list[BaseRoute] | None, 

3356 Doc( 

3357 """ 

3358 List of *path operations* that will be used as OpenAPI callbacks. 

3359 

3360 This is only for OpenAPI documentation, the callbacks won't be used 

3361 directly. 

3362 

3363 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3364 

3365 Read more about it in the 

3366 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/). 

3367 """ 

3368 ), 

3369 ] = None, 

3370 openapi_extra: Annotated[ 

3371 dict[str, Any] | None, 

3372 Doc( 

3373 """ 

3374 Extra metadata to be included in the OpenAPI schema for this *path 

3375 operation*. 

3376 

3377 Read more about it in the 

3378 [FastAPI docs for Path Operation Advanced Configuration](https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema). 

3379 """ 

3380 ), 

3381 ] = None, 

3382 generate_unique_id_function: Annotated[ 

3383 Callable[[routing.APIRoute], str], 

3384 Doc( 

3385 """ 

3386 Customize the function used to generate unique IDs for the *path 

3387 operations* shown in the generated OpenAPI. 

3388 

3389 This is particularly useful when automatically generating clients or 

3390 SDKs for your API. 

3391 

3392 Read more about it in the 

3393 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

3394 """ 

3395 ), 

3396 ] = Default(generate_unique_id), 

3397 ) -> Callable[[DecoratedCallable], DecoratedCallable]: 

3398 """ 

3399 Add a *path operation* using an HTTP OPTIONS operation. 

3400 

3401 ## Example 

3402 

3403 ```python 

3404 from fastapi import FastAPI 

3405 

3406 app = FastAPI() 

3407 

3408 @app.options("/items/") 

3409 def get_item_options(): 

3410 return {"additions": ["Aji", "Guacamole"]} 

3411 ``` 

3412 """ 

3413 return self.router.options( 1abcd

3414 path, 

3415 response_model=response_model, 

3416 status_code=status_code, 

3417 tags=tags, 

3418 dependencies=dependencies, 

3419 summary=summary, 

3420 description=description, 

3421 response_description=response_description, 

3422 responses=responses, 

3423 deprecated=deprecated, 

3424 operation_id=operation_id, 

3425 response_model_include=response_model_include, 

3426 response_model_exclude=response_model_exclude, 

3427 response_model_by_alias=response_model_by_alias, 

3428 response_model_exclude_unset=response_model_exclude_unset, 

3429 response_model_exclude_defaults=response_model_exclude_defaults, 

3430 response_model_exclude_none=response_model_exclude_none, 

3431 include_in_schema=include_in_schema, 

3432 response_class=response_class, 

3433 name=name, 

3434 callbacks=callbacks, 

3435 openapi_extra=openapi_extra, 

3436 generate_unique_id_function=generate_unique_id_function, 

3437 ) 

3438 

3439 def head( 1abcd

3440 self, 

3441 path: Annotated[ 

3442 str, 

3443 Doc( 

3444 """ 

3445 The URL path to be used for this *path operation*. 

3446 

3447 For example, in `http://example.com/items`, the path is `/items`. 

3448 """ 

3449 ), 

3450 ], 

3451 *, 

3452 response_model: Annotated[ 

3453 Any, 

3454 Doc( 

3455 """ 

3456 The type to use for the response. 

3457 

3458 It could be any valid Pydantic *field* type. So, it doesn't have to 

3459 be a Pydantic model, it could be other things, like a `list`, `dict`, 

3460 etc. 

3461 

3462 It will be used for: 

3463 

3464 * Documentation: the generated OpenAPI (and the UI at `/docs`) will 

3465 show it as the response (JSON Schema). 

3466 * Serialization: you could return an arbitrary object and the 

3467 `response_model` would be used to serialize that object into the 

3468 corresponding JSON. 

3469 * Filtering: the JSON sent to the client will only contain the data 

3470 (fields) defined in the `response_model`. If you returned an object 

3471 that contains an attribute `password` but the `response_model` does 

3472 not include that field, the JSON sent to the client would not have 

3473 that `password`. 

3474 * Validation: whatever you return will be serialized with the 

3475 `response_model`, converting any data as necessary to generate the 

3476 corresponding JSON. But if the data in the object returned is not 

3477 valid, that would mean a violation of the contract with the client, 

3478 so it's an error from the API developer. So, FastAPI will raise an 

3479 error and return a 500 error code (Internal Server Error). 

3480 

3481 Read more about it in the 

3482 [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/). 

3483 """ 

3484 ), 

3485 ] = Default(None), 

3486 status_code: Annotated[ 

3487 int | None, 

3488 Doc( 

3489 """ 

3490 The default status code to be used for the response. 

3491 

3492 You could override the status code by returning a response directly. 

3493 

3494 Read more about it in the 

3495 [FastAPI docs for Response Status Code](https://fastapi.tiangolo.com/tutorial/response-status-code/). 

3496 """ 

3497 ), 

3498 ] = None, 

3499 tags: Annotated[ 

3500 list[str | Enum] | None, 

3501 Doc( 

3502 """ 

3503 A list of tags to be applied to the *path operation*. 

3504 

3505 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3506 

3507 Read more about it in the 

3508 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags). 

3509 """ 

3510 ), 

3511 ] = None, 

3512 dependencies: Annotated[ 

3513 Sequence[Depends] | None, 

3514 Doc( 

3515 """ 

3516 A list of dependencies (using `Depends()`) to be applied to the 

3517 *path operation*. 

3518 

3519 Read more about it in the 

3520 [FastAPI docs for Dependencies in path operation decorators](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/). 

3521 """ 

3522 ), 

3523 ] = None, 

3524 summary: Annotated[ 

3525 str | None, 

3526 Doc( 

3527 """ 

3528 A summary for the *path operation*. 

3529 

3530 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3531 

3532 Read more about it in the 

3533 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

3534 """ 

3535 ), 

3536 ] = None, 

3537 description: Annotated[ 

3538 str | None, 

3539 Doc( 

3540 """ 

3541 A description for the *path operation*. 

3542 

3543 If not provided, it will be extracted automatically from the docstring 

3544 of the *path operation function*. 

3545 

3546 It can contain Markdown. 

3547 

3548 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3549 

3550 Read more about it in the 

3551 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

3552 """ 

3553 ), 

3554 ] = None, 

3555 response_description: Annotated[ 

3556 str, 

3557 Doc( 

3558 """ 

3559 The description for the default response. 

3560 

3561 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3562 """ 

3563 ), 

3564 ] = "Successful Response", 

3565 responses: Annotated[ 

3566 dict[int | str, dict[str, Any]] | None, 

3567 Doc( 

3568 """ 

3569 Additional responses that could be returned by this *path operation*. 

3570 

3571 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3572 """ 

3573 ), 

3574 ] = None, 

3575 deprecated: Annotated[ 

3576 bool | None, 

3577 Doc( 

3578 """ 

3579 Mark this *path operation* as deprecated. 

3580 

3581 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3582 """ 

3583 ), 

3584 ] = None, 

3585 operation_id: Annotated[ 

3586 str | None, 

3587 Doc( 

3588 """ 

3589 Custom operation ID to be used by this *path operation*. 

3590 

3591 By default, it is generated automatically. 

3592 

3593 If you provide a custom operation ID, you need to make sure it is 

3594 unique for the whole API. 

3595 

3596 You can customize the 

3597 operation ID generation with the parameter 

3598 `generate_unique_id_function` in the `FastAPI` class. 

3599 

3600 Read more about it in the 

3601 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

3602 """ 

3603 ), 

3604 ] = None, 

3605 response_model_include: Annotated[ 

3606 IncEx | None, 

3607 Doc( 

3608 """ 

3609 Configuration passed to Pydantic to include only certain fields in the 

3610 response data. 

3611 

3612 Read more about it in the 

3613 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

3614 """ 

3615 ), 

3616 ] = None, 

3617 response_model_exclude: Annotated[ 

3618 IncEx | None, 

3619 Doc( 

3620 """ 

3621 Configuration passed to Pydantic to exclude certain fields in the 

3622 response data. 

3623 

3624 Read more about it in the 

3625 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

3626 """ 

3627 ), 

3628 ] = None, 

3629 response_model_by_alias: Annotated[ 

3630 bool, 

3631 Doc( 

3632 """ 

3633 Configuration passed to Pydantic to define if the response model 

3634 should be serialized by alias when an alias is used. 

3635 

3636 Read more about it in the 

3637 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

3638 """ 

3639 ), 

3640 ] = True, 

3641 response_model_exclude_unset: Annotated[ 

3642 bool, 

3643 Doc( 

3644 """ 

3645 Configuration passed to Pydantic to define if the response data 

3646 should have all the fields, including the ones that were not set and 

3647 have their default values. This is different from 

3648 `response_model_exclude_defaults` in that if the fields are set, 

3649 they will be included in the response, even if the value is the same 

3650 as the default. 

3651 

3652 When `True`, default values are omitted from the response. 

3653 

3654 Read more about it in the 

3655 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter). 

3656 """ 

3657 ), 

3658 ] = False, 

3659 response_model_exclude_defaults: Annotated[ 

3660 bool, 

3661 Doc( 

3662 """ 

3663 Configuration passed to Pydantic to define if the response data 

3664 should have all the fields, including the ones that have the same value 

3665 as the default. This is different from `response_model_exclude_unset` 

3666 in that if the fields are set but contain the same default values, 

3667 they will be excluded from the response. 

3668 

3669 When `True`, default values are omitted from the response. 

3670 

3671 Read more about it in the 

3672 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter). 

3673 """ 

3674 ), 

3675 ] = False, 

3676 response_model_exclude_none: Annotated[ 

3677 bool, 

3678 Doc( 

3679 """ 

3680 Configuration passed to Pydantic to define if the response data should 

3681 exclude fields set to `None`. 

3682 

3683 This is much simpler (less smart) than `response_model_exclude_unset` 

3684 and `response_model_exclude_defaults`. You probably want to use one of 

3685 those two instead of this one, as those allow returning `None` values 

3686 when it makes sense. 

3687 

3688 Read more about it in the 

3689 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_exclude_none). 

3690 """ 

3691 ), 

3692 ] = False, 

3693 include_in_schema: Annotated[ 

3694 bool, 

3695 Doc( 

3696 """ 

3697 Include this *path operation* in the generated OpenAPI schema. 

3698 

3699 This affects the generated OpenAPI (e.g. visible at `/docs`). 

3700 

3701 Read more about it in the 

3702 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). 

3703 """ 

3704 ), 

3705 ] = True, 

3706 response_class: Annotated[ 

3707 type[Response], 

3708 Doc( 

3709 """ 

3710 Response class to be used for this *path operation*. 

3711 

3712 This will not be used if you return a response directly. 

3713 

3714 Read more about it in the 

3715 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#redirectresponse). 

3716 """ 

3717 ), 

3718 ] = Default(JSONResponse), 

3719 name: Annotated[ 

3720 str | None, 

3721 Doc( 

3722 """ 

3723 Name for this *path operation*. Only used internally. 

3724 """ 

3725 ), 

3726 ] = None, 

3727 callbacks: Annotated[ 

3728 list[BaseRoute] | None, 

3729 Doc( 

3730 """ 

3731 List of *path operations* that will be used as OpenAPI callbacks. 

3732 

3733 This is only for OpenAPI documentation, the callbacks won't be used 

3734 directly. 

3735 

3736 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3737 

3738 Read more about it in the 

3739 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/). 

3740 """ 

3741 ), 

3742 ] = None, 

3743 openapi_extra: Annotated[ 

3744 dict[str, Any] | None, 

3745 Doc( 

3746 """ 

3747 Extra metadata to be included in the OpenAPI schema for this *path 

3748 operation*. 

3749 

3750 Read more about it in the 

3751 [FastAPI docs for Path Operation Advanced Configuration](https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema). 

3752 """ 

3753 ), 

3754 ] = None, 

3755 generate_unique_id_function: Annotated[ 

3756 Callable[[routing.APIRoute], str], 

3757 Doc( 

3758 """ 

3759 Customize the function used to generate unique IDs for the *path 

3760 operations* shown in the generated OpenAPI. 

3761 

3762 This is particularly useful when automatically generating clients or 

3763 SDKs for your API. 

3764 

3765 Read more about it in the 

3766 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

3767 """ 

3768 ), 

3769 ] = Default(generate_unique_id), 

3770 ) -> Callable[[DecoratedCallable], DecoratedCallable]: 

3771 """ 

3772 Add a *path operation* using an HTTP HEAD operation. 

3773 

3774 ## Example 

3775 

3776 ```python 

3777 from fastapi import FastAPI, Response 

3778 

3779 app = FastAPI() 

3780 

3781 @app.head("/items/", status_code=204) 

3782 def get_items_headers(response: Response): 

3783 response.headers["X-Cat-Dog"] = "Alone in the world" 

3784 ``` 

3785 """ 

3786 return self.router.head( 1abcd

3787 path, 

3788 response_model=response_model, 

3789 status_code=status_code, 

3790 tags=tags, 

3791 dependencies=dependencies, 

3792 summary=summary, 

3793 description=description, 

3794 response_description=response_description, 

3795 responses=responses, 

3796 deprecated=deprecated, 

3797 operation_id=operation_id, 

3798 response_model_include=response_model_include, 

3799 response_model_exclude=response_model_exclude, 

3800 response_model_by_alias=response_model_by_alias, 

3801 response_model_exclude_unset=response_model_exclude_unset, 

3802 response_model_exclude_defaults=response_model_exclude_defaults, 

3803 response_model_exclude_none=response_model_exclude_none, 

3804 include_in_schema=include_in_schema, 

3805 response_class=response_class, 

3806 name=name, 

3807 callbacks=callbacks, 

3808 openapi_extra=openapi_extra, 

3809 generate_unique_id_function=generate_unique_id_function, 

3810 ) 

3811 

3812 def patch( 1abcd

3813 self, 

3814 path: Annotated[ 

3815 str, 

3816 Doc( 

3817 """ 

3818 The URL path to be used for this *path operation*. 

3819 

3820 For example, in `http://example.com/items`, the path is `/items`. 

3821 """ 

3822 ), 

3823 ], 

3824 *, 

3825 response_model: Annotated[ 

3826 Any, 

3827 Doc( 

3828 """ 

3829 The type to use for the response. 

3830 

3831 It could be any valid Pydantic *field* type. So, it doesn't have to 

3832 be a Pydantic model, it could be other things, like a `list`, `dict`, 

3833 etc. 

3834 

3835 It will be used for: 

3836 

3837 * Documentation: the generated OpenAPI (and the UI at `/docs`) will 

3838 show it as the response (JSON Schema). 

3839 * Serialization: you could return an arbitrary object and the 

3840 `response_model` would be used to serialize that object into the 

3841 corresponding JSON. 

3842 * Filtering: the JSON sent to the client will only contain the data 

3843 (fields) defined in the `response_model`. If you returned an object 

3844 that contains an attribute `password` but the `response_model` does 

3845 not include that field, the JSON sent to the client would not have 

3846 that `password`. 

3847 * Validation: whatever you return will be serialized with the 

3848 `response_model`, converting any data as necessary to generate the 

3849 corresponding JSON. But if the data in the object returned is not 

3850 valid, that would mean a violation of the contract with the client, 

3851 so it's an error from the API developer. So, FastAPI will raise an 

3852 error and return a 500 error code (Internal Server Error). 

3853 

3854 Read more about it in the 

3855 [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/). 

3856 """ 

3857 ), 

3858 ] = Default(None), 

3859 status_code: Annotated[ 

3860 int | None, 

3861 Doc( 

3862 """ 

3863 The default status code to be used for the response. 

3864 

3865 You could override the status code by returning a response directly. 

3866 

3867 Read more about it in the 

3868 [FastAPI docs for Response Status Code](https://fastapi.tiangolo.com/tutorial/response-status-code/). 

3869 """ 

3870 ), 

3871 ] = None, 

3872 tags: Annotated[ 

3873 list[str | Enum] | None, 

3874 Doc( 

3875 """ 

3876 A list of tags to be applied to the *path operation*. 

3877 

3878 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3879 

3880 Read more about it in the 

3881 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags). 

3882 """ 

3883 ), 

3884 ] = None, 

3885 dependencies: Annotated[ 

3886 Sequence[Depends] | None, 

3887 Doc( 

3888 """ 

3889 A list of dependencies (using `Depends()`) to be applied to the 

3890 *path operation*. 

3891 

3892 Read more about it in the 

3893 [FastAPI docs for Dependencies in path operation decorators](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/). 

3894 """ 

3895 ), 

3896 ] = None, 

3897 summary: Annotated[ 

3898 str | None, 

3899 Doc( 

3900 """ 

3901 A summary for the *path operation*. 

3902 

3903 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3904 

3905 Read more about it in the 

3906 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

3907 """ 

3908 ), 

3909 ] = None, 

3910 description: Annotated[ 

3911 str | None, 

3912 Doc( 

3913 """ 

3914 A description for the *path operation*. 

3915 

3916 If not provided, it will be extracted automatically from the docstring 

3917 of the *path operation function*. 

3918 

3919 It can contain Markdown. 

3920 

3921 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3922 

3923 Read more about it in the 

3924 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

3925 """ 

3926 ), 

3927 ] = None, 

3928 response_description: Annotated[ 

3929 str, 

3930 Doc( 

3931 """ 

3932 The description for the default response. 

3933 

3934 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3935 """ 

3936 ), 

3937 ] = "Successful Response", 

3938 responses: Annotated[ 

3939 dict[int | str, dict[str, Any]] | None, 

3940 Doc( 

3941 """ 

3942 Additional responses that could be returned by this *path operation*. 

3943 

3944 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3945 """ 

3946 ), 

3947 ] = None, 

3948 deprecated: Annotated[ 

3949 bool | None, 

3950 Doc( 

3951 """ 

3952 Mark this *path operation* as deprecated. 

3953 

3954 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

3955 """ 

3956 ), 

3957 ] = None, 

3958 operation_id: Annotated[ 

3959 str | None, 

3960 Doc( 

3961 """ 

3962 Custom operation ID to be used by this *path operation*. 

3963 

3964 By default, it is generated automatically. 

3965 

3966 If you provide a custom operation ID, you need to make sure it is 

3967 unique for the whole API. 

3968 

3969 You can customize the 

3970 operation ID generation with the parameter 

3971 `generate_unique_id_function` in the `FastAPI` class. 

3972 

3973 Read more about it in the 

3974 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

3975 """ 

3976 ), 

3977 ] = None, 

3978 response_model_include: Annotated[ 

3979 IncEx | None, 

3980 Doc( 

3981 """ 

3982 Configuration passed to Pydantic to include only certain fields in the 

3983 response data. 

3984 

3985 Read more about it in the 

3986 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

3987 """ 

3988 ), 

3989 ] = None, 

3990 response_model_exclude: Annotated[ 

3991 IncEx | None, 

3992 Doc( 

3993 """ 

3994 Configuration passed to Pydantic to exclude certain fields in the 

3995 response data. 

3996 

3997 Read more about it in the 

3998 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

3999 """ 

4000 ), 

4001 ] = None, 

4002 response_model_by_alias: Annotated[ 

4003 bool, 

4004 Doc( 

4005 """ 

4006 Configuration passed to Pydantic to define if the response model 

4007 should be serialized by alias when an alias is used. 

4008 

4009 Read more about it in the 

4010 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

4011 """ 

4012 ), 

4013 ] = True, 

4014 response_model_exclude_unset: Annotated[ 

4015 bool, 

4016 Doc( 

4017 """ 

4018 Configuration passed to Pydantic to define if the response data 

4019 should have all the fields, including the ones that were not set and 

4020 have their default values. This is different from 

4021 `response_model_exclude_defaults` in that if the fields are set, 

4022 they will be included in the response, even if the value is the same 

4023 as the default. 

4024 

4025 When `True`, default values are omitted from the response. 

4026 

4027 Read more about it in the 

4028 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter). 

4029 """ 

4030 ), 

4031 ] = False, 

4032 response_model_exclude_defaults: Annotated[ 

4033 bool, 

4034 Doc( 

4035 """ 

4036 Configuration passed to Pydantic to define if the response data 

4037 should have all the fields, including the ones that have the same value 

4038 as the default. This is different from `response_model_exclude_unset` 

4039 in that if the fields are set but contain the same default values, 

4040 they will be excluded from the response. 

4041 

4042 When `True`, default values are omitted from the response. 

4043 

4044 Read more about it in the 

4045 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter). 

4046 """ 

4047 ), 

4048 ] = False, 

4049 response_model_exclude_none: Annotated[ 

4050 bool, 

4051 Doc( 

4052 """ 

4053 Configuration passed to Pydantic to define if the response data should 

4054 exclude fields set to `None`. 

4055 

4056 This is much simpler (less smart) than `response_model_exclude_unset` 

4057 and `response_model_exclude_defaults`. You probably want to use one of 

4058 those two instead of this one, as those allow returning `None` values 

4059 when it makes sense. 

4060 

4061 Read more about it in the 

4062 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_exclude_none). 

4063 """ 

4064 ), 

4065 ] = False, 

4066 include_in_schema: Annotated[ 

4067 bool, 

4068 Doc( 

4069 """ 

4070 Include this *path operation* in the generated OpenAPI schema. 

4071 

4072 This affects the generated OpenAPI (e.g. visible at `/docs`). 

4073 

4074 Read more about it in the 

4075 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). 

4076 """ 

4077 ), 

4078 ] = True, 

4079 response_class: Annotated[ 

4080 type[Response], 

4081 Doc( 

4082 """ 

4083 Response class to be used for this *path operation*. 

4084 

4085 This will not be used if you return a response directly. 

4086 

4087 Read more about it in the 

4088 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#redirectresponse). 

4089 """ 

4090 ), 

4091 ] = Default(JSONResponse), 

4092 name: Annotated[ 

4093 str | None, 

4094 Doc( 

4095 """ 

4096 Name for this *path operation*. Only used internally. 

4097 """ 

4098 ), 

4099 ] = None, 

4100 callbacks: Annotated[ 

4101 list[BaseRoute] | None, 

4102 Doc( 

4103 """ 

4104 List of *path operations* that will be used as OpenAPI callbacks. 

4105 

4106 This is only for OpenAPI documentation, the callbacks won't be used 

4107 directly. 

4108 

4109 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

4110 

4111 Read more about it in the 

4112 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/). 

4113 """ 

4114 ), 

4115 ] = None, 

4116 openapi_extra: Annotated[ 

4117 dict[str, Any] | None, 

4118 Doc( 

4119 """ 

4120 Extra metadata to be included in the OpenAPI schema for this *path 

4121 operation*. 

4122 

4123 Read more about it in the 

4124 [FastAPI docs for Path Operation Advanced Configuration](https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema). 

4125 """ 

4126 ), 

4127 ] = None, 

4128 generate_unique_id_function: Annotated[ 

4129 Callable[[routing.APIRoute], str], 

4130 Doc( 

4131 """ 

4132 Customize the function used to generate unique IDs for the *path 

4133 operations* shown in the generated OpenAPI. 

4134 

4135 This is particularly useful when automatically generating clients or 

4136 SDKs for your API. 

4137 

4138 Read more about it in the 

4139 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

4140 """ 

4141 ), 

4142 ] = Default(generate_unique_id), 

4143 ) -> Callable[[DecoratedCallable], DecoratedCallable]: 

4144 """ 

4145 Add a *path operation* using an HTTP PATCH operation. 

4146 

4147 ## Example 

4148 

4149 ```python 

4150 from fastapi import FastAPI 

4151 from pydantic import BaseModel 

4152 

4153 class Item(BaseModel): 

4154 name: str 

4155 description: str | None = None 

4156 

4157 app = FastAPI() 

4158 

4159 @app.patch("/items/") 

4160 def update_item(item: Item): 

4161 return {"message": "Item updated in place"} 

4162 ``` 

4163 """ 

4164 return self.router.patch( 2a wdxd9 ! # $ b c +d% ' ( ) d ye* + , -

4165 path, 

4166 response_model=response_model, 

4167 status_code=status_code, 

4168 tags=tags, 

4169 dependencies=dependencies, 

4170 summary=summary, 

4171 description=description, 

4172 response_description=response_description, 

4173 responses=responses, 

4174 deprecated=deprecated, 

4175 operation_id=operation_id, 

4176 response_model_include=response_model_include, 

4177 response_model_exclude=response_model_exclude, 

4178 response_model_by_alias=response_model_by_alias, 

4179 response_model_exclude_unset=response_model_exclude_unset, 

4180 response_model_exclude_defaults=response_model_exclude_defaults, 

4181 response_model_exclude_none=response_model_exclude_none, 

4182 include_in_schema=include_in_schema, 

4183 response_class=response_class, 

4184 name=name, 

4185 callbacks=callbacks, 

4186 openapi_extra=openapi_extra, 

4187 generate_unique_id_function=generate_unique_id_function, 

4188 ) 

4189 

4190 def trace( 1abcd

4191 self, 

4192 path: Annotated[ 

4193 str, 

4194 Doc( 

4195 """ 

4196 The URL path to be used for this *path operation*. 

4197 

4198 For example, in `http://example.com/items`, the path is `/items`. 

4199 """ 

4200 ), 

4201 ], 

4202 *, 

4203 response_model: Annotated[ 

4204 Any, 

4205 Doc( 

4206 """ 

4207 The type to use for the response. 

4208 

4209 It could be any valid Pydantic *field* type. So, it doesn't have to 

4210 be a Pydantic model, it could be other things, like a `list`, `dict`, 

4211 etc. 

4212 

4213 It will be used for: 

4214 

4215 * Documentation: the generated OpenAPI (and the UI at `/docs`) will 

4216 show it as the response (JSON Schema). 

4217 * Serialization: you could return an arbitrary object and the 

4218 `response_model` would be used to serialize that object into the 

4219 corresponding JSON. 

4220 * Filtering: the JSON sent to the client will only contain the data 

4221 (fields) defined in the `response_model`. If you returned an object 

4222 that contains an attribute `password` but the `response_model` does 

4223 not include that field, the JSON sent to the client would not have 

4224 that `password`. 

4225 * Validation: whatever you return will be serialized with the 

4226 `response_model`, converting any data as necessary to generate the 

4227 corresponding JSON. But if the data in the object returned is not 

4228 valid, that would mean a violation of the contract with the client, 

4229 so it's an error from the API developer. So, FastAPI will raise an 

4230 error and return a 500 error code (Internal Server Error). 

4231 

4232 Read more about it in the 

4233 [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/). 

4234 """ 

4235 ), 

4236 ] = Default(None), 

4237 status_code: Annotated[ 

4238 int | None, 

4239 Doc( 

4240 """ 

4241 The default status code to be used for the response. 

4242 

4243 You could override the status code by returning a response directly. 

4244 

4245 Read more about it in the 

4246 [FastAPI docs for Response Status Code](https://fastapi.tiangolo.com/tutorial/response-status-code/). 

4247 """ 

4248 ), 

4249 ] = None, 

4250 tags: Annotated[ 

4251 list[str | Enum] | None, 

4252 Doc( 

4253 """ 

4254 A list of tags to be applied to the *path operation*. 

4255 

4256 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

4257 

4258 Read more about it in the 

4259 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/#tags). 

4260 """ 

4261 ), 

4262 ] = None, 

4263 dependencies: Annotated[ 

4264 Sequence[Depends] | None, 

4265 Doc( 

4266 """ 

4267 A list of dependencies (using `Depends()`) to be applied to the 

4268 *path operation*. 

4269 

4270 Read more about it in the 

4271 [FastAPI docs for Dependencies in path operation decorators](https://fastapi.tiangolo.com/tutorial/dependencies/dependencies-in-path-operation-decorators/). 

4272 """ 

4273 ), 

4274 ] = None, 

4275 summary: Annotated[ 

4276 str | None, 

4277 Doc( 

4278 """ 

4279 A summary for the *path operation*. 

4280 

4281 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

4282 

4283 Read more about it in the 

4284 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

4285 """ 

4286 ), 

4287 ] = None, 

4288 description: Annotated[ 

4289 str | None, 

4290 Doc( 

4291 """ 

4292 A description for the *path operation*. 

4293 

4294 If not provided, it will be extracted automatically from the docstring 

4295 of the *path operation function*. 

4296 

4297 It can contain Markdown. 

4298 

4299 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

4300 

4301 Read more about it in the 

4302 [FastAPI docs for Path Operation Configuration](https://fastapi.tiangolo.com/tutorial/path-operation-configuration/). 

4303 """ 

4304 ), 

4305 ] = None, 

4306 response_description: Annotated[ 

4307 str, 

4308 Doc( 

4309 """ 

4310 The description for the default response. 

4311 

4312 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

4313 """ 

4314 ), 

4315 ] = "Successful Response", 

4316 responses: Annotated[ 

4317 dict[int | str, dict[str, Any]] | None, 

4318 Doc( 

4319 """ 

4320 Additional responses that could be returned by this *path operation*. 

4321 

4322 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

4323 """ 

4324 ), 

4325 ] = None, 

4326 deprecated: Annotated[ 

4327 bool | None, 

4328 Doc( 

4329 """ 

4330 Mark this *path operation* as deprecated. 

4331 

4332 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

4333 """ 

4334 ), 

4335 ] = None, 

4336 operation_id: Annotated[ 

4337 str | None, 

4338 Doc( 

4339 """ 

4340 Custom operation ID to be used by this *path operation*. 

4341 

4342 By default, it is generated automatically. 

4343 

4344 If you provide a custom operation ID, you need to make sure it is 

4345 unique for the whole API. 

4346 

4347 You can customize the 

4348 operation ID generation with the parameter 

4349 `generate_unique_id_function` in the `FastAPI` class. 

4350 

4351 Read more about it in the 

4352 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

4353 """ 

4354 ), 

4355 ] = None, 

4356 response_model_include: Annotated[ 

4357 IncEx | None, 

4358 Doc( 

4359 """ 

4360 Configuration passed to Pydantic to include only certain fields in the 

4361 response data. 

4362 

4363 Read more about it in the 

4364 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

4365 """ 

4366 ), 

4367 ] = None, 

4368 response_model_exclude: Annotated[ 

4369 IncEx | None, 

4370 Doc( 

4371 """ 

4372 Configuration passed to Pydantic to exclude certain fields in the 

4373 response data. 

4374 

4375 Read more about it in the 

4376 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

4377 """ 

4378 ), 

4379 ] = None, 

4380 response_model_by_alias: Annotated[ 

4381 bool, 

4382 Doc( 

4383 """ 

4384 Configuration passed to Pydantic to define if the response model 

4385 should be serialized by alias when an alias is used. 

4386 

4387 Read more about it in the 

4388 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_include-and-response_model_exclude). 

4389 """ 

4390 ), 

4391 ] = True, 

4392 response_model_exclude_unset: Annotated[ 

4393 bool, 

4394 Doc( 

4395 """ 

4396 Configuration passed to Pydantic to define if the response data 

4397 should have all the fields, including the ones that were not set and 

4398 have their default values. This is different from 

4399 `response_model_exclude_defaults` in that if the fields are set, 

4400 they will be included in the response, even if the value is the same 

4401 as the default. 

4402 

4403 When `True`, default values are omitted from the response. 

4404 

4405 Read more about it in the 

4406 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter). 

4407 """ 

4408 ), 

4409 ] = False, 

4410 response_model_exclude_defaults: Annotated[ 

4411 bool, 

4412 Doc( 

4413 """ 

4414 Configuration passed to Pydantic to define if the response data 

4415 should have all the fields, including the ones that have the same value 

4416 as the default. This is different from `response_model_exclude_unset` 

4417 in that if the fields are set but contain the same default values, 

4418 they will be excluded from the response. 

4419 

4420 When `True`, default values are omitted from the response. 

4421 

4422 Read more about it in the 

4423 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#use-the-response_model_exclude_unset-parameter). 

4424 """ 

4425 ), 

4426 ] = False, 

4427 response_model_exclude_none: Annotated[ 

4428 bool, 

4429 Doc( 

4430 """ 

4431 Configuration passed to Pydantic to define if the response data should 

4432 exclude fields set to `None`. 

4433 

4434 This is much simpler (less smart) than `response_model_exclude_unset` 

4435 and `response_model_exclude_defaults`. You probably want to use one of 

4436 those two instead of this one, as those allow returning `None` values 

4437 when it makes sense. 

4438 

4439 Read more about it in the 

4440 [FastAPI docs for Response Model - Return Type](https://fastapi.tiangolo.com/tutorial/response-model/#response_model_exclude_none). 

4441 """ 

4442 ), 

4443 ] = False, 

4444 include_in_schema: Annotated[ 

4445 bool, 

4446 Doc( 

4447 """ 

4448 Include this *path operation* in the generated OpenAPI schema. 

4449 

4450 This affects the generated OpenAPI (e.g. visible at `/docs`). 

4451 

4452 Read more about it in the 

4453 [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). 

4454 """ 

4455 ), 

4456 ] = True, 

4457 response_class: Annotated[ 

4458 type[Response], 

4459 Doc( 

4460 """ 

4461 Response class to be used for this *path operation*. 

4462 

4463 This will not be used if you return a response directly. 

4464 

4465 Read more about it in the 

4466 [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/#redirectresponse). 

4467 """ 

4468 ), 

4469 ] = Default(JSONResponse), 

4470 name: Annotated[ 

4471 str | None, 

4472 Doc( 

4473 """ 

4474 Name for this *path operation*. Only used internally. 

4475 """ 

4476 ), 

4477 ] = None, 

4478 callbacks: Annotated[ 

4479 list[BaseRoute] | None, 

4480 Doc( 

4481 """ 

4482 List of *path operations* that will be used as OpenAPI callbacks. 

4483 

4484 This is only for OpenAPI documentation, the callbacks won't be used 

4485 directly. 

4486 

4487 It will be added to the generated OpenAPI (e.g. visible at `/docs`). 

4488 

4489 Read more about it in the 

4490 [FastAPI docs for OpenAPI Callbacks](https://fastapi.tiangolo.com/advanced/openapi-callbacks/). 

4491 """ 

4492 ), 

4493 ] = None, 

4494 openapi_extra: Annotated[ 

4495 dict[str, Any] | None, 

4496 Doc( 

4497 """ 

4498 Extra metadata to be included in the OpenAPI schema for this *path 

4499 operation*. 

4500 

4501 Read more about it in the 

4502 [FastAPI docs for Path Operation Advanced Configuration](https://fastapi.tiangolo.com/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema). 

4503 """ 

4504 ), 

4505 ] = None, 

4506 generate_unique_id_function: Annotated[ 

4507 Callable[[routing.APIRoute], str], 

4508 Doc( 

4509 """ 

4510 Customize the function used to generate unique IDs for the *path 

4511 operations* shown in the generated OpenAPI. 

4512 

4513 This is particularly useful when automatically generating clients or 

4514 SDKs for your API. 

4515 

4516 Read more about it in the 

4517 [FastAPI docs about how to Generate Clients](https://fastapi.tiangolo.com/advanced/generate-clients/#custom-generate-unique-id-function). 

4518 """ 

4519 ), 

4520 ] = Default(generate_unique_id), 

4521 ) -> Callable[[DecoratedCallable], DecoratedCallable]: 

4522 """ 

4523 Add a *path operation* using an HTTP TRACE operation. 

4524 

4525 ## Example 

4526 

4527 ```python 

4528 from fastapi import FastAPI 

4529 

4530 app = FastAPI() 

4531 

4532 @app.trace("/items/{item_id}") 

4533 def trace_item(item_id: str): 

4534 return None 

4535 ``` 

4536 """ 

4537 return self.router.trace( 1abcd

4538 path, 

4539 response_model=response_model, 

4540 status_code=status_code, 

4541 tags=tags, 

4542 dependencies=dependencies, 

4543 summary=summary, 

4544 description=description, 

4545 response_description=response_description, 

4546 responses=responses, 

4547 deprecated=deprecated, 

4548 operation_id=operation_id, 

4549 response_model_include=response_model_include, 

4550 response_model_exclude=response_model_exclude, 

4551 response_model_by_alias=response_model_by_alias, 

4552 response_model_exclude_unset=response_model_exclude_unset, 

4553 response_model_exclude_defaults=response_model_exclude_defaults, 

4554 response_model_exclude_none=response_model_exclude_none, 

4555 include_in_schema=include_in_schema, 

4556 response_class=response_class, 

4557 name=name, 

4558 callbacks=callbacks, 

4559 openapi_extra=openapi_extra, 

4560 generate_unique_id_function=generate_unique_id_function, 

4561 ) 

4562 

4563 def websocket_route( 1abcd

4564 self, path: str, name: str | None = None 

4565 ) -> Callable[[DecoratedCallable], DecoratedCallable]: 

4566 def decorator(func: DecoratedCallable) -> DecoratedCallable: 1abcd

4567 self.router.add_websocket_route(path, func, name=name) 1abcd

4568 return func 1abcd

4569 

4570 return decorator 1abcd

4571 

4572 @deprecated( 1abcd

4573 """ 

4574 on_event is deprecated, use lifespan event handlers instead. 

4575 

4576 Read more about it in the 

4577 [FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/). 

4578 """ 

4579 ) 

4580 def on_event( 1abcd

4581 self, 

4582 event_type: Annotated[ 

4583 str, 

4584 Doc( 

4585 """ 

4586 The type of event. `startup` or `shutdown`. 

4587 """ 

4588 ), 

4589 ], 

4590 ) -> Callable[[DecoratedCallable], DecoratedCallable]: 

4591 """ 

4592 Add an event handler for the application. 

4593 

4594 `on_event` is deprecated, use `lifespan` event handlers instead. 

4595 

4596 Read more about it in the 

4597 [FastAPI docs for Lifespan Events](https://fastapi.tiangolo.com/advanced/events/#alternative-events-deprecated). 

4598 """ 

4599 return self.router.on_event(event_type) 3eb { Gd Hd Id . / : ; 9 ! # $ ib cCbdCbob | ?d @d [d = ? @ [ % ' ( ) sb yb } De Ee ] ^ _ ` * + , - Cb

4600 

4601 def middleware( 1abcd

4602 self, 

4603 middleware_type: Annotated[ 

4604 str, 

4605 Doc( 

4606 """ 

4607 The type of middleware. Currently only supports `http`. 

4608 """ 

4609 ), 

4610 ], 

4611 ) -> Callable[[DecoratedCallable], DecoratedCallable]: 

4612 """ 

4613 Add a middleware to the application. 

4614 

4615 Read more about it in the 

4616 [FastAPI docs for Middleware](https://fastapi.tiangolo.com/tutorial/middleware/). 

4617 

4618 ## Example 

4619 

4620 ```python 

4621 import time 

4622 from typing import Awaitable, Callable 

4623 

4624 from fastapi import FastAPI, Request, Response 

4625 

4626 app = FastAPI() 

4627 

4628 

4629 @app.middleware("http") 

4630 async def add_process_time_header( 

4631 request: Request, call_next: Callable[[Request], Awaitable[Response]] 

4632 ) -> Response: 

4633 start_time = time.time() 

4634 response = await call_next(request) 

4635 process_time = time.time() - start_time 

4636 response.headers["X-Process-Time"] = str(process_time) 

4637 return response 

4638 ``` 

4639 """ 

4640 

4641 def decorator(func: DecoratedCallable) -> DecoratedCallable: 1abcd

4642 self.add_middleware(BaseHTTPMiddleware, dispatch=func) 1abcd

4643 return func 1abcd

4644 

4645 return decorator 1abcd

4646 

4647 def exception_handler( 1abcd

4648 self, 

4649 exc_class_or_status_code: Annotated[ 

4650 int | type[Exception], 

4651 Doc( 

4652 """ 

4653 The Exception class this would handle, or a status code. 

4654 """ 

4655 ), 

4656 ], 

4657 ) -> Callable[[DecoratedCallable], DecoratedCallable]: 

4658 """ 

4659 Add an exception handler to the app. 

4660 

4661 Read more about it in the 

4662 [FastAPI docs for Handling Errors](https://fastapi.tiangolo.com/tutorial/handling-errors/). 

4663 

4664 ## Example 

4665 

4666 ```python 

4667 from fastapi import FastAPI, Request 

4668 from fastapi.responses import JSONResponse 

4669 

4670 

4671 class UnicornException(Exception): 

4672 def __init__(self, name: str): 

4673 self.name = name 

4674 

4675 

4676 app = FastAPI() 

4677 

4678 

4679 @app.exception_handler(UnicornException) 

4680 async def unicorn_exception_handler(request: Request, exc: UnicornException): 

4681 return JSONResponse( 

4682 status_code=418, 

4683 content={"message": f"Oops! {exc.name} did something. There goes a rainbow..."}, 

4684 ) 

4685 ``` 

4686 """ 

4687 

4688 def decorator(func: DecoratedCallable) -> DecoratedCallable: 1abcd

4689 self.add_exception_handler(exc_class_or_status_code, func) 1abcd

4690 return func 1abcd

4691 

4692 return decorator 1abcd