Commit 25770cc
# Backport
This will backport the following commits from `main` to `9.1`:
- [[Security Solution] Adds `customized_fields` and `has_base_version`
fields to `rule_source` object schema
(#234793)](#234793)
<!--- Backport version: 9.6.6 -->
### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sorenlouv/backport)
<!--BACKPORT [{"author":{"name":"Davis
Plumlee","email":"[email protected]"},"sourceCommit":{"committedDate":"2025-10-03T19:52:53Z","message":"[Security
Solution] Adds `customized_fields` and `has_base_version` fields to
`rule_source` object schema (#234793)\n\n**Resolves:
https://github.com/elastic/security-team/issues/12507**\n(internal)\n\n##
Summary\n\nAdds two new fields to the existing `rule_source` object in
our rule\nschema as described in
https://github.com/elastic/kibana/pull/230856.\nAlso updates and adds
test coverage for the new field logic.\n\nThe new fields are:\n\n-
`customized_fields`: an array of objects containing rule field
names\nthat have been modified from the base version of the prebuilt
rule.\n- Defaults to empty array if prebuilt rule is not customized or
if base\nversion did not exist during diff calculation.\n-
`has_base_version`: a boolean field that specifies if the base
version\nof a prebuilt rule was able to be fetched and used during
the\ncustomization calculation.\n\nThis PR also adds related telemetry
fields as described in\nhttps://github.com//pull/230856.
This includes a\n`customizations` object field which contains a slimmed
down version of\n`customized_fields` and has a `num_functional_fields`
number field that\nis created in the telemetry task pipeline by
comparing the customized\nfields array to a constant list of field names
that we are defining as\n\"functional\". This source of truth list can
be found in
the\n`x-pack/solutions/security/plugins/security_solution/common/detection_engine/constants.ts`\nfile\n\n###
Examples\n\n```json\n{\n \"rule_source\": {\n \"type\": \"external\",\n
\"is_customized\": true,\n /* New fields */\n \"customized_fields\": [\n
{\n \"field_name\": \"tags\",\n },\n {\n \"field_name\": \"query\",\n
}\n ],\n \"has_base_version\": true\n
}\n}\n```\n\n```json\n\"customizations\": {\n \"customized_fields\":
[\"tags\", \"query\"],\n \"num_functional_fields\": 2,\n}\n```\n\n## How
to test telemetry\n\nLink to internal staging with example data:
([internal\nstaging](https://analytics-staging.sde.elastic.dev/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:'2025-09-26T15:59:24.512Z',to:'2025-09-26T16:08:58.435Z'))&_a=(columns:!(),dataSource:(dataViewId:'4ca97040-d095-11ec-95a5-011050c1180f',type:dataView),filters:!(),interval:auto,query:(language:kuery,query:'customizations.num_functional_fields%20%3E%200'),sort:!(!('@timestamp',desc)),viewMode:documents)))\n\n1.
Set the prebuilt rule task type to something shorter than `1hr` in\nthis
file:\n`x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/prebuilt_rule_alerts.ts`\n2.
Add the following to `kibana.dev.yml`:\n```\ntelemetry.enabled:
true\ntelemetry.optIn: true\n\n// (Optional for checking to see if its
working)\nlogging:\n root:\n appenders: [default]\n level: warn\n
loggers:\n - name: plugins.securitySolution\n level: debug\n - name:
plugins.ruleRegistry\n - name: plugins.taskManager\n```\n3. Start up
both Elasticsearch and kibana (Has to be done _after_\nupdating task
interval as task objects are stored in ES)\n4. Install prebuilt
rules\n5. Modify prebuilt rules with different field customizations and
enable\nthose rules\n6. Generate alerts that match these rules (resolver
script generator,\ndev tools, query modification, etc.)\n7. View the
alerts getting sent to the internal staging telemetry\ncluster
(https://analytics-staging.sde.elastic.dev) in
the\n`detections_alert_telemetry_elastic*` index\n8. Use the new
`customizations` field to filter out/in customized rule\nalerts\n\n##
Checklist\n\nCheck the PR satisfies following conditions. \n\nReviewers
should verify this PR satisfies this list as well.\n\n-
[x]\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\nwas
added for features that require explanation or tutorials\n- [x] [Unit or
functional\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\nwere
updated or added to match the most common scenarios\n- [x] [Flaky
Test\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\nused on any tests changed\n- [x] [Rule
customization\ntests](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/9317)\n\n---------\n\nCo-authored-by:
Elastic Machine
<[email protected]>\nCo-authored-by: Georgii
Gorbachev
<[email protected]>","sha":"aeb873a93ad8f8f29b4a616abe17c030621a3823","branchLabelMapping":{"^v9.3.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:enhancement","Team:Detections
and Resp","Team: SecuritySolution","Team:Detection Rule
Management","Feature:Prebuilt Detection
Rules","backport:version","v9.2.0","v9.3.0","v9.1.6"],"title":"[Security
Solution] Adds `customized_fields` and `has_base_version` fields to
`rule_source` object
schema","number":234793,"url":"https://github.com/elastic/kibana/pull/234793","mergeCommit":{"message":"[Security
Solution] Adds `customized_fields` and `has_base_version` fields to
`rule_source` object schema (#234793)\n\n**Resolves:
https://github.com/elastic/security-team/issues/12507**\n(internal)\n\n##
Summary\n\nAdds two new fields to the existing `rule_source` object in
our rule\nschema as described in
https://github.com/elastic/kibana/pull/230856.\nAlso updates and adds
test coverage for the new field logic.\n\nThe new fields are:\n\n-
`customized_fields`: an array of objects containing rule field
names\nthat have been modified from the base version of the prebuilt
rule.\n- Defaults to empty array if prebuilt rule is not customized or
if base\nversion did not exist during diff calculation.\n-
`has_base_version`: a boolean field that specifies if the base
version\nof a prebuilt rule was able to be fetched and used during
the\ncustomization calculation.\n\nThis PR also adds related telemetry
fields as described in\nhttps://github.com//pull/230856.
This includes a\n`customizations` object field which contains a slimmed
down version of\n`customized_fields` and has a `num_functional_fields`
number field that\nis created in the telemetry task pipeline by
comparing the customized\nfields array to a constant list of field names
that we are defining as\n\"functional\". This source of truth list can
be found in
the\n`x-pack/solutions/security/plugins/security_solution/common/detection_engine/constants.ts`\nfile\n\n###
Examples\n\n```json\n{\n \"rule_source\": {\n \"type\": \"external\",\n
\"is_customized\": true,\n /* New fields */\n \"customized_fields\": [\n
{\n \"field_name\": \"tags\",\n },\n {\n \"field_name\": \"query\",\n
}\n ],\n \"has_base_version\": true\n
}\n}\n```\n\n```json\n\"customizations\": {\n \"customized_fields\":
[\"tags\", \"query\"],\n \"num_functional_fields\": 2,\n}\n```\n\n## How
to test telemetry\n\nLink to internal staging with example data:
([internal\nstaging](https://analytics-staging.sde.elastic.dev/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:'2025-09-26T15:59:24.512Z',to:'2025-09-26T16:08:58.435Z'))&_a=(columns:!(),dataSource:(dataViewId:'4ca97040-d095-11ec-95a5-011050c1180f',type:dataView),filters:!(),interval:auto,query:(language:kuery,query:'customizations.num_functional_fields%20%3E%200'),sort:!(!('@timestamp',desc)),viewMode:documents)))\n\n1.
Set the prebuilt rule task type to something shorter than `1hr` in\nthis
file:\n`x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/prebuilt_rule_alerts.ts`\n2.
Add the following to `kibana.dev.yml`:\n```\ntelemetry.enabled:
true\ntelemetry.optIn: true\n\n// (Optional for checking to see if its
working)\nlogging:\n root:\n appenders: [default]\n level: warn\n
loggers:\n - name: plugins.securitySolution\n level: debug\n - name:
plugins.ruleRegistry\n - name: plugins.taskManager\n```\n3. Start up
both Elasticsearch and kibana (Has to be done _after_\nupdating task
interval as task objects are stored in ES)\n4. Install prebuilt
rules\n5. Modify prebuilt rules with different field customizations and
enable\nthose rules\n6. Generate alerts that match these rules (resolver
script generator,\ndev tools, query modification, etc.)\n7. View the
alerts getting sent to the internal staging telemetry\ncluster
(https://analytics-staging.sde.elastic.dev) in
the\n`detections_alert_telemetry_elastic*` index\n8. Use the new
`customizations` field to filter out/in customized rule\nalerts\n\n##
Checklist\n\nCheck the PR satisfies following conditions. \n\nReviewers
should verify this PR satisfies this list as well.\n\n-
[x]\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\nwas
added for features that require explanation or tutorials\n- [x] [Unit or
functional\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\nwere
updated or added to match the most common scenarios\n- [x] [Flaky
Test\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\nused on any tests changed\n- [x] [Rule
customization\ntests](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/9317)\n\n---------\n\nCo-authored-by:
Elastic Machine
<[email protected]>\nCo-authored-by: Georgii
Gorbachev
<[email protected]>","sha":"aeb873a93ad8f8f29b4a616abe17c030621a3823"}},"sourceBranch":"main","suggestedTargetBranches":["9.2","9.1"],"targetPullRequestStates":[{"branch":"9.2","label":"v9.2.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v9.3.0","branchLabelMappingKey":"^v9.3.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/234793","number":234793,"mergeCommit":{"message":"[Security
Solution] Adds `customized_fields` and `has_base_version` fields to
`rule_source` object schema (#234793)\n\n**Resolves:
https://github.com/elastic/security-team/issues/12507**\n(internal)\n\n##
Summary\n\nAdds two new fields to the existing `rule_source` object in
our rule\nschema as described in
https://github.com/elastic/kibana/pull/230856.\nAlso updates and adds
test coverage for the new field logic.\n\nThe new fields are:\n\n-
`customized_fields`: an array of objects containing rule field
names\nthat have been modified from the base version of the prebuilt
rule.\n- Defaults to empty array if prebuilt rule is not customized or
if base\nversion did not exist during diff calculation.\n-
`has_base_version`: a boolean field that specifies if the base
version\nof a prebuilt rule was able to be fetched and used during
the\ncustomization calculation.\n\nThis PR also adds related telemetry
fields as described in\nhttps://github.com//pull/230856.
This includes a\n`customizations` object field which contains a slimmed
down version of\n`customized_fields` and has a `num_functional_fields`
number field that\nis created in the telemetry task pipeline by
comparing the customized\nfields array to a constant list of field names
that we are defining as\n\"functional\". This source of truth list can
be found in
the\n`x-pack/solutions/security/plugins/security_solution/common/detection_engine/constants.ts`\nfile\n\n###
Examples\n\n```json\n{\n \"rule_source\": {\n \"type\": \"external\",\n
\"is_customized\": true,\n /* New fields */\n \"customized_fields\": [\n
{\n \"field_name\": \"tags\",\n },\n {\n \"field_name\": \"query\",\n
}\n ],\n \"has_base_version\": true\n
}\n}\n```\n\n```json\n\"customizations\": {\n \"customized_fields\":
[\"tags\", \"query\"],\n \"num_functional_fields\": 2,\n}\n```\n\n## How
to test telemetry\n\nLink to internal staging with example data:
([internal\nstaging](https://analytics-staging.sde.elastic.dev/app/discover#/?_g=(filters:!(),refreshInterval:(pause:!t,value:60000),time:(from:'2025-09-26T15:59:24.512Z',to:'2025-09-26T16:08:58.435Z'))&_a=(columns:!(),dataSource:(dataViewId:'4ca97040-d095-11ec-95a5-011050c1180f',type:dataView),filters:!(),interval:auto,query:(language:kuery,query:'customizations.num_functional_fields%20%3E%200'),sort:!(!('@timestamp',desc)),viewMode:documents)))\n\n1.
Set the prebuilt rule task type to something shorter than `1hr` in\nthis
file:\n`x-pack/solutions/security/plugins/security_solution/server/lib/telemetry/tasks/prebuilt_rule_alerts.ts`\n2.
Add the following to `kibana.dev.yml`:\n```\ntelemetry.enabled:
true\ntelemetry.optIn: true\n\n// (Optional for checking to see if its
working)\nlogging:\n root:\n appenders: [default]\n level: warn\n
loggers:\n - name: plugins.securitySolution\n level: debug\n - name:
plugins.ruleRegistry\n - name: plugins.taskManager\n```\n3. Start up
both Elasticsearch and kibana (Has to be done _after_\nupdating task
interval as task objects are stored in ES)\n4. Install prebuilt
rules\n5. Modify prebuilt rules with different field customizations and
enable\nthose rules\n6. Generate alerts that match these rules (resolver
script generator,\ndev tools, query modification, etc.)\n7. View the
alerts getting sent to the internal staging telemetry\ncluster
(https://analytics-staging.sde.elastic.dev) in
the\n`detections_alert_telemetry_elastic*` index\n8. Use the new
`customizations` field to filter out/in customized rule\nalerts\n\n##
Checklist\n\nCheck the PR satisfies following conditions. \n\nReviewers
should verify this PR satisfies this list as well.\n\n-
[x]\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\nwas
added for features that require explanation or tutorials\n- [x] [Unit or
functional\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\nwere
updated or added to match the most common scenarios\n- [x] [Flaky
Test\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\nused on any tests changed\n- [x] [Rule
customization\ntests](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/9317)\n\n---------\n\nCo-authored-by:
Elastic Machine
<[email protected]>\nCo-authored-by: Georgii
Gorbachev
<[email protected]>","sha":"aeb873a93ad8f8f29b4a616abe17c030621a3823"}},{"branch":"9.1","label":"v9.1.6","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"}]}]
BACKPORT-->
Co-authored-by: Davis Plumlee <[email protected]>
Co-authored-by: Elastic Machine <[email protected]>
Co-authored-by: Georgii Gorbachev <[email protected]>
1 parent 2ddc181 commit 25770cc
File tree
55 files changed
+1386
-303
lines changed- oas_docs/output
- x-pack/solutions/security
- plugins/security_solution
- common/api/detection_engine
- model/rule_schema
- rule_management/import_rules
- docs
- openapi
- ess
- serverless
- testing/test_plans/detection_response/prebuilt_rules
- public/detection_engine/rule_management/components/rule_details/json_diff
- server/lib
- detection_engine
- rule_management
- logic
- actions
- bulk_actions
- detection_rules_client
- converters
- mergers
- rule_source
- export
- import
- rule_schema/model
- telemetry
- filterlists
- tasks
- test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules
- common
- import_export
- revert_prebuilt_rules
- customization_enabled/customization
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
55 files changed
+1386
-303
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
60930 | 60930 | | |
60931 | 60931 | | |
60932 | 60932 | | |
| 60933 | + | |
| 60934 | + | |
| 60935 | + | |
| 60936 | + | |
| 60937 | + | |
| 60938 | + | |
| 60939 | + | |
| 60940 | + | |
| 60941 | + | |
| 60942 | + | |
| 60943 | + | |
| 60944 | + | |
| 60945 | + | |
| 60946 | + | |
60933 | 60947 | | |
60934 | 60948 | | |
60935 | 60949 | | |
60936 | 60950 | | |
| 60951 | + | |
| 60952 | + | |
| 60953 | + | |
| 60954 | + | |
60937 | 60955 | | |
60938 | 60956 | | |
60939 | 60957 | | |
| |||
60943 | 60961 | | |
60944 | 60962 | | |
60945 | 60963 | | |
| 60964 | + | |
| 60965 | + | |
60946 | 60966 | | |
60947 | 60967 | | |
60948 | 60968 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
70375 | 70375 | | |
70376 | 70376 | | |
70377 | 70377 | | |
| 70378 | + | |
| 70379 | + | |
| 70380 | + | |
| 70381 | + | |
| 70382 | + | |
| 70383 | + | |
| 70384 | + | |
| 70385 | + | |
| 70386 | + | |
| 70387 | + | |
| 70388 | + | |
| 70389 | + | |
| 70390 | + | |
| 70391 | + | |
70378 | 70392 | | |
70379 | 70393 | | |
70380 | 70394 | | |
70381 | 70395 | | |
| 70396 | + | |
| 70397 | + | |
| 70398 | + | |
| 70399 | + | |
70382 | 70400 | | |
70383 | 70401 | | |
70384 | 70402 | | |
| |||
70388 | 70406 | | |
70389 | 70407 | | |
70390 | 70408 | | |
| 70409 | + | |
| 70410 | + | |
70391 | 70411 | | |
70392 | 70412 | | |
70393 | 70413 | | |
| |||
Lines changed: 21 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
89 | 89 | | |
90 | 90 | | |
91 | 91 | | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
92 | 111 | | |
93 | 112 | | |
94 | 113 | | |
| |||
104 | 123 | | |
105 | 124 | | |
106 | 125 | | |
| 126 | + | |
| 127 | + | |
107 | 128 | | |
108 | 129 | | |
109 | 130 | | |
| |||
Lines changed: 22 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
73 | 89 | | |
74 | 90 | | |
75 | 91 | | |
| |||
91 | 107 | | |
92 | 108 | | |
93 | 109 | | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
94 | 114 | | |
95 | 115 | | |
96 | 116 | | |
| 117 | + | |
| 118 | + | |
97 | 119 | | |
98 | 120 | | |
99 | 121 | | |
| |||
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
259 | 259 | | |
260 | 260 | | |
261 | 261 | | |
| 262 | + | |
| 263 | + | |
262 | 264 | | |
263 | 265 | | |
264 | 266 | | |
| |||
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1056 | 1056 | | |
1057 | 1057 | | |
1058 | 1058 | | |
| 1059 | + | |
| 1060 | + | |
1059 | 1061 | | |
1060 | 1062 | | |
1061 | 1063 | | |
| |||
Lines changed: 26 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6272 | 6272 | | |
6273 | 6273 | | |
6274 | 6274 | | |
| 6275 | + | |
| 6276 | + | |
| 6277 | + | |
| 6278 | + | |
| 6279 | + | |
| 6280 | + | |
| 6281 | + | |
| 6282 | + | |
| 6283 | + | |
| 6284 | + | |
| 6285 | + | |
| 6286 | + | |
| 6287 | + | |
| 6288 | + | |
| 6289 | + | |
| 6290 | + | |
| 6291 | + | |
| 6292 | + | |
| 6293 | + | |
| 6294 | + | |
6275 | 6295 | | |
6276 | 6296 | | |
6277 | 6297 | | |
6278 | 6298 | | |
6279 | 6299 | | |
6280 | 6300 | | |
| 6301 | + | |
| 6302 | + | |
| 6303 | + | |
| 6304 | + | |
6281 | 6305 | | |
6282 | 6306 | | |
6283 | 6307 | | |
| |||
6287 | 6311 | | |
6288 | 6312 | | |
6289 | 6313 | | |
| 6314 | + | |
| 6315 | + | |
6290 | 6316 | | |
6291 | 6317 | | |
6292 | 6318 | | |
| |||
Lines changed: 26 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5602 | 5602 | | |
5603 | 5603 | | |
5604 | 5604 | | |
| 5605 | + | |
| 5606 | + | |
| 5607 | + | |
| 5608 | + | |
| 5609 | + | |
| 5610 | + | |
| 5611 | + | |
| 5612 | + | |
| 5613 | + | |
| 5614 | + | |
| 5615 | + | |
| 5616 | + | |
| 5617 | + | |
| 5618 | + | |
| 5619 | + | |
| 5620 | + | |
| 5621 | + | |
| 5622 | + | |
| 5623 | + | |
| 5624 | + | |
5605 | 5625 | | |
5606 | 5626 | | |
5607 | 5627 | | |
5608 | 5628 | | |
5609 | 5629 | | |
5610 | 5630 | | |
| 5631 | + | |
| 5632 | + | |
| 5633 | + | |
| 5634 | + | |
5611 | 5635 | | |
5612 | 5636 | | |
5613 | 5637 | | |
| |||
5617 | 5641 | | |
5618 | 5642 | | |
5619 | 5643 | | |
| 5644 | + | |
| 5645 | + | |
5620 | 5646 | | |
5621 | 5647 | | |
5622 | 5648 | | |
| |||
Lines changed: 33 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
51 | 52 | | |
52 | 53 | | |
53 | 54 | | |
| |||
83 | 84 | | |
84 | 85 | | |
85 | 86 | | |
| 87 | + | |
| 88 | + | |
86 | 89 | | |
87 | 90 | | |
88 | 91 | | |
| |||
245 | 248 | | |
246 | 249 | | |
247 | 250 | | |
| 251 | + | |
| 252 | + | |
248 | 253 | | |
249 | 254 | | |
250 | 255 | | |
| |||
253 | 258 | | |
254 | 259 | | |
255 | 260 | | |
256 | | - | |
| 261 | + | |
257 | 262 | | |
258 | 263 | | |
259 | 264 | | |
| 265 | + | |
| 266 | + | |
260 | 267 | | |
261 | 268 | | |
262 | 269 | | |
| |||
272 | 279 | | |
273 | 280 | | |
274 | 281 | | |
| 282 | + | |
| 283 | + | |
275 | 284 | | |
276 | 285 | | |
277 | 286 | | |
| |||
308 | 317 | | |
309 | 318 | | |
310 | 319 | | |
| 320 | + | |
| 321 | + | |
311 | 322 | | |
312 | 323 | | |
313 | 324 | | |
| |||
324 | 335 | | |
325 | 336 | | |
326 | 337 | | |
| 338 | + | |
| 339 | + | |
327 | 340 | | |
328 | 341 | | |
329 | 342 | | |
| |||
340 | 353 | | |
341 | 354 | | |
342 | 355 | | |
| 356 | + | |
| 357 | + | |
343 | 358 | | |
344 | 359 | | |
345 | | - | |
346 | | - | |
347 | | - | |
348 | | - | |
349 | 360 | | |
350 | 361 | | |
351 | 362 | | |
| |||
356 | 367 | | |
357 | 368 | | |
358 | 369 | | |
| 370 | + | |
| 371 | + | |
359 | 372 | | |
360 | 373 | | |
361 | 374 | | |
| |||
367 | 380 | | |
368 | 381 | | |
369 | 382 | | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
370 | 398 | | |
371 | 399 | | |
372 | 400 | | |
| |||
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
274 | 274 | | |
275 | 275 | | |
276 | 276 | | |
| 277 | + | |
277 | 278 | | |
278 | 279 | | |
279 | 280 | | |
| |||
292 | 293 | | |
293 | 294 | | |
294 | 295 | | |
| 296 | + | |
295 | 297 | | |
296 | 298 | | |
297 | 299 | | |
| |||
0 commit comments