/* Metafunctions
Functions that modify or decorate morphisms in this category
============================================================== */

/* Constructors
convert between elements (~instances) of two categories
==================================== */
var From = {
};

var To = {
};

/* Functors
convert between morphisms (~functions) of two categories.
==================================== */

/* Native versions
equivalents to this categories' method,
for built-in Javascript types
====================================== */
var Native = {
	Function: function<U>(value: U): U {
		return value;
	}
};

/* Exports
==================== */
export {
	IIdentifiable, Identifiable,
	identity,
	Native
}
import { createNodeParser } from './creator'

import type { NodeCreator } from './creator'

const strongIconRegExp = /^(.*?)(\[\[[^[\]]*\.icon(?:\*\d+)?\]\])(.*)$/

export interface StrongIconNode {
  type: 'strongIcon'
  pathType: 'root' | 'relative'
  path: string
}

const createStrongIconNode: NodeCreator<StrongIconNode> = target => {
  const index = target.lastIndexOf('.icon')
  const path = target.substring(2, index)
  const numStr = target.substring(index + 5, target.length - 2)
  const num = numStr.startsWith('*') ? parseInt(numStr.substring(1), 10) : 1
  return new Array(num).fill({}).map(() => ({
    type: 'strongIcon',
    pathType: path.startsWith('/') ? 'root' : 'relative',
    path
  }))
}

export const StrongIconNodeParser = createNodeParser(createStrongIconNode, {
  parseOnNested: false,
  parseOnQuoted: true,
  patterns: [strongIconRegExp]
})
import deepmerge from 'deepmerge';

/**
 * Merges a task-specific lint configuration into the Task's lint configuration.
 *
 * @param {(TemplateLintConfig | CLIEngine.Options)} config - The linting configuration to merge into.
 * @param {Record<string, any>} taskLintConfig - The task's specific lint configuration.
 * @returns {*} - The combined configs
 */
export function mergeLintConfig<T extends object>(config: T, taskLintConfig: Record<string, any>) {
  let combinedConfigs = deepmerge(config, taskLintConfig);

  if ('rules' in combinedConfigs) {
    let rules = combinedConfigs.rules;
    let ruleIds = Object.keys(rules);

    ruleIds.forEach((ruleId: string) => {
      let ruleConfig = rules[ruleId];
      let firstTuplePart = '';
      let secondTuplePart = {};

      if (Array.isArray(ruleConfig) && ruleConfig.length > 2) {
        for (const [i, element] of ruleConfig.entries()) {
          if (i % 2 === 0) {
            firstTuplePart = element;
          } else {
            secondTuplePart = Object.assign(secondTuplePart, element);
          }
        }

        rules[ruleId] = [firstTuplePart, secondTuplePart];
      }
    });
  }

  return combinedConfigs;
}
import { M4, V4 } from "./vectorMath";

// The `Point` object contains x,y,z, and w coordinates. `Point`s support
// various arithmetic operations with other `Points`, scalars, or `Matrices`.
//
// Most of the methods on `Point` are destructive, so be sure to use `.copy()`
// when you want to preserve an object's value.

/**  Convenience method for creating a new `Point` object*/
export function P(x: number, y: number, z: number, w: number = 1): V4 {
    return


	return nil, trace.NewOrAdd(6, "main", "getMainURLs", err, "")
	}
	return urls, nil
}
package maroto

import (
	"fmt"
	"testing"

	"github.com/johnfercher/maroto/v2/pkg/core/entity"

	"github.com/johnfercher/maroto/v2/pkg/components/text"

	"github.com/johnfercher/go-tree/node"
	"github.com/johnfercher/maroto/v2/pkg/components/col"
	"github.com/johnfercher/maroto/v2/pkg/components/row"
	"github.com/johnfercher/maroto/v2/pkg/core"

	"github.com/johnfercher/maroto/v2/mocks"
	"github.com/johnfercher/maroto/v2/pkg/components/page"
	"github.com/stretchr/testify/assert"
)

func TestNewMetricsDecorator(t *testing.T) {
	// Act
	sut := NewMetricsDecorator(nil)

	// Assert
	assert.NotNil(t, sut)
	assert.Equal(t, "*maroto.MetricsDecorator", fmt.Sprintf("%T", sut))
}

func TestMetricsDecorator_AddPages(t *testing.T) {
	// Arrange
	pg := page.New()

	docToReturn := mocks.NewDocument(t)
	docToReturn.EXPECT().GetBytes().Return([]byte{1, 2, 3})
	inner := mocks.NewMaroto(t)
	inner.EXPECT().AddPages(pg)
	inner.EXPECT().Generate().Return(docToReturn, nil)

	sut := NewMetricsDecorator(inner)

	// Act
	sut.AddPages(pg)
	sut.AddPages(pg)

	// Assert
	doc, err := sut.Generate()
	assert.Nil(t, err)
	assert.NotNil(t, doc)

	report := doc.GetReport()
	assert.NotNil(t, report)
	assert.Equal(t, 2, len(report.TimeMetrics))
	assert.Equal(t, "generate", report.TimeMetrics[0].Key)
	assert.Equal(t, "add_page", report.TimeMetrics[1].Key)
	assert.Equal(t, 2, len(report.TimeMetrics[1].Times))
	inner.AssertNumberOfCalls(t, "AddPages", 2)
}

func TestMetricsDecorator_AddRow(t *testing.T) {
	// Arrange
	col := col.New(12)

	docToReturn := mocks.NewDocument(t)
	docToReturn.EXPECT().GetBytes().Return([]byte{1, 2, 3})
	inner := mocks.NewMaroto(t)
	inner.EXPECT().AddRow(10.0, col).Return(nil)
	inner.EXPECT().Generate().Return(docToReturn, nil)

	sut := NewMetricsDecorator(inner)

	// Act
	sut.AddRow(10, col)
	sut.AddRow(10, col)

	// Assert
	doc, err := sut.Generate()
	assert.Nil(t, err)
	assert.NotNil(t, doc)

	report := doc.GetReport()
	assert.NotNil(t, report)
	assert.Equal(t, 2, len(report.TimeMetrics))
	assert.Equal(t, "generate", report.TimeMetrics[0].Key)
	assert.Equal(t, "add_row", report.TimeMetrics[1].Key)
	assert.Equal(t, 2, len(report.TimeMetrics[1].Times))
	inner.AssertNumberOfCalls(t, "AddRow", 2)
}

func TestMetricsDecorator_AddRows(t *testing.T) {
	// Arrange
	row := row.New(10).Add(col.New(12))

	docToReturn := mocks.NewDocument(t)
	docToReturn.EXPECT().GetBytes().Return([]byte{1, 2, 3})
	inner := mocks.NewMaroto(t)


 0;
    }

    iframe,
    object,
    embed,
    video {
        background-color: transparent;
        border: 0;
        height: 100%;
        left: 0;
        margin: 0;
        outline: none;
        padding: 0;
        position: absolute;
        top: 0;
        width: 100%;
    }

    img {
        /*
	     * Position the image absolutely and then move it's four positions
	     * 1000000% out of the container. This with an auto margin is the core of the trick.
	     * Why such a large number? Firefox seems to have issue when using larger images even
	     * at 100%.
	     */
        bottom: -1000000%;
        left: -1000000%;
        margin: auto;
        position: absolute;
        right: -1000000%;
        top: -1000000%;
        width: 100%;
    }

    &.media-scroll {
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }
}
@mixin linear-gradient($pos, $G1, $G2: null,
                       $G3: null, $G4: null,
                       $G5: null, $G6: null,
                       $G7: null, $G8: null,
                       $G9: null, $G10: null,
                       $fallback: null) {
  // Detect what type of value exists in $pos
  $pos-type: type-of(nth($pos, 1));
  $pos-spec: null;
  $pos-degree: null;

  // If $pos is missing from mixin, reassign vars and add default position
  @if ($pos-type == color) or (nth($pos, 1) == "transparent")  {
    $G10: $G9; $G9: $G8; $G8: $G7; $G7: $G6; $G6: $G5;
     $G5: $G4; $G4: $G3; $G3: $G2; $G2: $G1; $G1: $pos;
     $pos: null;
  }

  @if $pos {
    $positions: _linear-positions-parser($pos);
    $pos-degree: nth($positions, 1);
    $pos-spec:   nth($positions, 2);
  }

  $full: $G1, $G2, $G3, $G4, $G5, $G6, $G7, $G8, $G9, $G10;

  // Set $G1 as the default fallback color
  $fallback-color: nth($G1, 1);

  // If $fallback is a color use that color as the fallback color
  @if (type-of($fallback) == color) or ($fallback == "transparent") {
    $fallback-color: $fallback;
  }

  background-color: $fallback-color;
  background-image: -webkit-linear-gradient($pos-degree $full); // Safari 5.1+, Chrome
  background-image: unquote("linear-gradient(#{$pos-spec}#{$full})");
}
//************************************************************************//
// Helper function for linear/radial-gradient-parsers.
// Source: http://sassmeister.com/gist/9647408
//************************************************************************//
@function _str-to-num($string) {
  // Matrices
  $strings: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9';
  $numbers:  0   1   2   3   4   5   6   7   8   9;

  // Result
  $result: 0;
  $divider: 0;
  $minus: false;

  // Looping through all characters
  @for $i from 1 through str-length($string) {
    $character: str-slice($string, $i, $i);
    $index: index($strings, $character);

    @if $character == '-' {
      $minus: true;
    }

    @else if $character == '.' {
      $divider: 1;
    }

    @else {
      @if not $index {
        $result: if($minus, $result * -1


any>{
        const { id } = req.params;
        const attendance = await pool.query('SELECT * FROM attendance WHERE id = ?', [id]);

        if (attendance.length > 0){
            return res.json(attendance[0]);
        }

        res.status(404).json(res.json({text: 'Record was not found'}));
    }

    public async create (req: Request, res: Response): Promise <void>{
        await pool.query('INSERT INTO attendance set ?', [req.body]);
        res.json({message: 'Record saved'});
    }

    public async delete (req: Request, res: Response): Promise<void>{
        const { id } = req.params;
        await pool.query('UPDATE course SET status = ? WHERE id = ?', [req.body, id]);
        res.json({text: 'Record ' + id + ' was deleted successfully'});
    }

    public async update (req: Request, res: Response){
        const { id } = req.params;
        await pool.query('UPDATE attendance SET ? WHERE id = ?', [req.body, id]);
        res.json('Record ' + id + ' was updated successfully');
    }
}

export const attendanceController = new AttendanceController();
import { createSlice } from '@reduxjs/toolkit';

export type GameState = {
    status: boolean,
}

const initState: GameState = { status: false };

const gameSlice = createSlice({
    name: 'game',
    initialState: initState,
    reducers: {
        toggleStatusGame(state) {
            state.status = !state.status;
        }
    }
})

export const { toggleStatusGame } = gameSlice.actions;
export default gameSlice.reducer;import { CompareFn } from '../algorithms/base.js';
export declare class Node<K = any, V = any> {
    parent: Node<K, V>;
    left: Node<K, V>;
    right: Node<K, V>;
    key: K;
    value?: V;
    constructor(nil: Nil, key: K, value?: V);
}
export type Nil = Node<any, any>;
export interface BinaryTreeData<K = any, V = any> {
    root: Node<K, V>;
    nil: Nil;
    compare: CompareFn<K>;
}
export declare const nil: Node<any, any>;
export declare function walkInOrder<K, V>(tree: BinaryTreeData<K, V>, walkRoot: Node<K, V>, cb: (n: Node<K, V>) => void): void;
export declare function next<K, V>(tree: BinaryTreeData<K, V>, node: Node<K, V>): Node<K, any>;
export declare function prev<K, V>(tree: BinaryTreeData<K, V>, node: Node<K, V>): Node<K, any>;
export declare function insert<K, V>(tree: BinaryTreeData<K, V>, node: Node<K, V>): void;
export declare function search<K>(tree: BinaryTreeData<K>, startNode: Node<K>, key: K): Node<K, any>;
export declare function transplant<K>(tree: BinaryTreeData<K>, oldNode: Node<K>, newNode: Node<K>): void;
export declare function remove<K>(tree: BinaryTreeData<K>, node: Node<K>): void;
export declare function min<K>(tree: BinaryTreeData<K>, startNode: Node<K>): Node<K, any>;
export declare function max<K>(tree: BinaryTreeData<K>, startNode: Node<K>): Node<K, any>;
export declare function rotateLeft<K>(tree: BinaryTreeData<K>, node: Node<K>): void;
export declare function rotateRight<K>(tree: BinaryTreeData<K>, node: Node<K>): void;
export declare function walkToRoot<K>(tree: BinaryTreeData, startNode: Node<K>, callback: (n: Node<K>) => void): void


SUBPIPELINEID_NULL = "2101001" // 子流水线id不存在
    const val ERROR_BUILD_TASK_SUBPIPELINEID_NOT_EXISTS = "2101002" // 子流水线不存在
    const val ERROR_PIPELINE_VIEW_MAX_LIMIT = "2101003" // 最多允许同时保存30个视图
    const val ERROR_PIPELINE_VIEW_NOT_FOUND = "2101004" // 视图({0})不存在
    const val ERROR_PIPELINE_VIEW_HAD_EXISTS = "2101005" // 视图({0})已存在
    const val ERROR_DEL_PIPELINE_VIEW_NO_PERM = "2101006" // 用户({0})无权限删除视图({1})
    const val PIPELINE_LIST_LENGTH_LIMIT = "2101007" // 流水线列表长度不能超过100
    const val USER_NEED_PIPELINE_X_PERMISSION = "2101008" // 流水线: 用户无{0}权限
    const val ERROR_PIPELINE_CHANNEL_CODE = "2101009" // 流水线：流水线渠道来源不符合({0})
    const val ERROR_ATOM_NOT_FOUND = "2101010" // 插件不存在
    const val ILLEGAL_PIPELINE_MODEL_JSON = "2101011" // 流水线: 流水线Model不合法
    const val OPERATE_PIPELINE_FAIL = "2101012" // 流水线: 流水线出现异常:{0}
    const val ERROR_PIPELINE_NAME_EXISTS = "2101013" // 流水线: 流水线名称已被使用
    const val ERROR_PIPELINE_TEMPLATE_CAN_NOT_EDIT = "2101014" // 流水线: 模板流水线不支持编辑
    const val ERROR_PIPELINE_NAME_TOO_LONG = "2101015" // 流水线名称过长
    const val ERROR_PIPELINE_IS_EXISTS = "2101016" // 流水线: 流水线已存在
    const val ERROR_QUALITY_TASK_NOT_FOUND = "2101017" // 流水线: 质量红线拦截的任务[{0}]不存在
    const val ERROR_QUALITY_REVIEWER_NOT_MATCH = "2101018" // 流水线: 用户({0})不在审核人员名单中
    const val CANCEL_BUILD_BY_OTHER_USER = "2101019" // 流水线已经被{0}取消构建，请过{1}秒后再试
    const val ERROR_START_BUILD_FREQUENT_LIMIT = "2101020" // 流水线: 不能太频繁启动构建
    const val DENY_START_BY_MANUAL = "2101021" // 流水线: 该流水线不能手动启动
    const val DENY_START_BY_REMOTE = "2101022" // 流水线: 该流水线不能远程触发
    const val ERROR_PARAM_WEBHOOK_ID_NAME_ALL_NULL = "2101023" // Webhook 的ID和名称同时为空
    const val ERROR_RESTORE_PIPELINE_NOT_FOUND = "2101024" // 要还原的流水线不存在，可能已经被删除或还原了
    const val ERROR_PIPELINE_MODEL_NEED_JOB = "2101025" // Stage缺少Job{0}
    const val ONLY_MANAGE_CAN_OPERATE_TE


ntId;
		}

	}

	buildFromList(list): Array<User> {

		let users: Array<User> = [];
		let user: User;

		if(list != null && list.length > 0){

			for(let u of list){
				user = new User();
				user.build(u);
				users.push(user);
			}

		}

		return users;

	}

}import { Permissions } from './../seeds/permissions.seed';
import { checkRole } from './../middlewares/CheckRole';
import { RoleRequest } from './../types/Request';
import { Roles } from './../initialState/roles';
import { ErrorHelper } from './../errors/ErrorHelper';
import * as express from 'express';
import * as serviceCatalogService from '../services/serviceCatalog.service';
import checkRoleMiddleware, { defineRole } from '../middlewares/checkRoleMIddleware';
const serviceCatalogRouter = express.Router();

// Получить все услуги
serviceCatalogRouter.get(
    '/',
    checkRoleMiddleware([Roles.Admin, Roles.Operator]),
    async (req: RoleRequest, res: express.Response) => {
        try {
            // Проверка роли
            const role = defineRole(req.user.role);
            checkRole(role, Permissions.ServiceCatalog);

            const serviceCatalog = await serviceCatalogService.getServiceCatalog();
            return res.status(200).json({ serviceCatalog });
        } catch (error) {
            return res.status(500).json(error);
        }
    },
);

// Создать услугу
serviceCatalogRouter.post(
    '/',
    checkRoleMiddleware([Roles.Admin]),
    async (req: RoleRequest, res: express.Response) => {
        try {
            // Проверка роли
            const role = defineRole(req.user.role);
            checkRole(role, Permissions.ServiceCatalog);

            const serviceCatalog = await serviceCatalogService.createServiceCatalog(req.body);
            return res.status(200).json({ serviceCatalog });
        } catch (error) {
            return res.status(500).json(error);
        }
    },
);

// Удалить услугу
serviceCatalogRouter.delete(
    '/:id',
    checkRoleMiddleware([Roles.Admin]),
    async (req: RoleRequest, res: express.Response) => {
        try {
            // Проверка роли
            const role = defineRole(req.user.role);
            checkRole(role, Permissions.ServiceCatalog);

            const { id } = req.params;
            const serviceCatalog = await serviceCatalogService.deleteServiceCatalog(Number(id));
            return res.status(200).json({ serviceCatalog });
        } catch (error) {
            ErrorHelper.deleteHandle(res, error);
        }
    },
);

// Обновить услугу
serviceCatalogRouter.put(
    '/',
    checkRoleMiddleware([Roles.Admin]),
    async (req: RoleRequest, res: express.Response) => {
        try {
            // Проверка роли
            const role = defineRole(req.user.role);
            checkRole(role, Permissions.ServiceCatalog);

            const serviceCatalog = await serviceCatalogService.updateServicaCatalog(req.body);
            return res.status(200).json({ serviceCatalog });
        } catch (error) {
            ErrorHelper.notFoundHandle(res, error);
        }
    },
);

export default serviceCatalogRouter;
import fs from 'fs';

export const jsonReader = (file: string): Object => {
  const fileBuffer = fs.readFileSync(file, 'utf-8');
  return JSON.parse(fileBuffer);
};

export const jsonWriter = (file:


t': 'v5.21',
          'FTL_current': 'v5.25.2',
          'docker_current': '2024.07.0',
          'core_latest': 'v6.0.5',
          'web_latest': 'v6.0.2',
          'FTL_latest': 'v6.0.4',
          'docker_latest': '2025.03.0',
          'core_branch': 'master',
          'web_branch': 'master',
          'FTL_branch': 'master',
        }),
      );
    });

    when(mockApiGatewayV5.server).thenReturn(serverV5);

    when(mockApiGatewayV5.updateDomain(body: anyNamed('body'))).thenAnswer(
      (_) async =>
          DomainResponse(result: APiResponseType.success, data: domains[0]),
    );

    when(
      mockApiGatewayV5.fetchLogs(
        any,
        any,
        size: anyNamed('size'),
        cursor: anyNamed('cursor'),
      ),
    ).thenAnswer((_) async {
      return FetchLogsResponse(
        result: APiResponseType.success,
        data: LogsInfo.fromV6(queries),
      );
    });
  }

  void _initApiGatewayV6Mock() {
    when(mockApiGatewayV6.getDomainLists()).thenAnswer(
      (_) async => GetDomainLists(
        result: APiResponseType.success,
        data: DomainListResult(
          whitelist: domains,
          whitelistRegex: [],
          blacklist: domains,
          blacklistRegex: [],
        ),
      ),
    );

    when(mockApiGatewayV6.removeDomainFromList(any)).thenAnswer((_) async {
      return RemoveDomainFromListResponse(result: APiResponseType.success);
    });

    when(mockApiGatewayV6.addDomainToList(any)).thenAnswer((_) async {
      return AddDomainToListResponse(result: APiResponseType.success);
    });

    when(
      mockApiGatewayV6.fetchLogs(
        any,
        any,
        size: anyNamed('size'),
        cursor: anyNamed('cursor'),
      ),
    ).thenAnswer((_) async {
      return FetchLogsResponse(
        result: APiResponseType.success,
        data: LogsInfo.fromV6(queries),
      );
    });

    when(mockApiGatewayV6.setWhiteBlacklist(any, any)).thenAnswer((_) async {
      return SetWhiteBlacklistResponse(
        result: APiResponseType.success,
        data: DomainResult(success: true, message: 'Added white.example.com'),
      );
    });

    when(mockApiGatewayV6.enableServerRequest()).thenAnswer((_) async {
      return EnableServerResponse(result: APiResponseType.success);
    });

    when(mockApiGatewayV6.disableServerRequest(any)).thenAnswer((_) async {
      return DisableServerResponse(result: APiResponseType.success);
    });

    when(mockApiGatewayV6.loginQuery()).thenAnswer(
      (_) async => LoginQueryResponse(
        result: APiResponseType.success,
        status: 'enabled',
        sid: 'sid123',
      ),
    );

    when(mockApiGatewayV6.loginQuery(refresh: true)).thenAnswer(
      (_) async => LoginQueryResponse(
        result: APiResponseType.success,
        status: 'enabled',
        sid: 'sid123',
      ),
    );

    when(
      mockApiGatewayV6.realtimeStatus(clientCount: anyNamed('clientCount')),
    ).thenAnswer(
      (_) async => RealtimeStatusResponse(
        result: APiResponseType.success,
        data: realtimeStatus,
      ),
    );

    when(mockApiGatewayV6.fetchOverTimeData()).thenAnswer(
      (_) async => FetchOverTimeDataResponse(
        result: APiResponseType.success,
        data: overtimeData,
      ),
    );

    when(mockApiGatewayV6.fetchAllServerInfo()).thenAnswer(
      (_) async => PiHoleServerInfoResponse(


 use :math:`G : \B{R}^{m \times (q+1)} \rightarrow \B{R}`
to denote an arbitrary scalar valued function of :math:`\{ y_i^k \}`.
We use :math:`H : \B{R}^{n \times (q+1)} \rightarrow \B{R}`
defined by

.. math::

   H ( \{ x_j^k \} ) = G[ F( \{ x_j^k \} ) ]

partial_y
*********
The size of *partial_y* is ( *q* +1)* *m* .
For :math:`i = 0 , \ldots , m-1`, :math:`k = 0 , \ldots , q`,

.. math::

   \R{partial\_y} [ i * (q + 1 ) + k ] = \partial G / \partial y_i^k

apartial_y
**********
The specifications for *apartial_y* is the same as for
*partial_y* (only the type of *apartial_y* is different).

partial_x
*********
The size of *partial_x* is ( *q* +1)* *n* .
The input values of the elements of *partial_x*
are not specified (must not matter).
Upon return,
for :math:`j = 0 , \ldots , n-1` and :math:`\ell = 0 , \ldots , q`,

.. math::
   :nowrap:

   \begin{eqnarray}
   \R{partial\_x} [ j * (q + 1) + \ell ] & = & \partial H / \partial x_j^\ell
   \\
   & = &
   ( \partial G / \partial \{ y_i^k \} ) \cdot
      ( \partial \{ y_i^k \} / \partial x_j^\ell )
   \\
   & = &
   \sum_{k=0}^q
   \sum_{i=0}^{m-1}
   ( \partial G / \partial y_i^k ) ( \partial y_i^k / \partial x_j^\ell )
   \\
   & = &
   \sum_{k=\ell}^q
   \sum_{i=0}^{m-1}
   \R{partial\_y}[ i * (q + 1 ) + k ] ( \partial F_i^k / \partial x_j^\ell )
   \end{eqnarray}

Note that we have used the fact that for :math:`k < \ell`,
:math:`\partial F_i^k / \partial x_j^\ell = 0`.

Short Circuit Operations
========================
For the :ref:`atomic_three_reverse@Base` prototype, if
``IdenticalZero`` ( *partial_y* [ *i* * ( *q* +1)+ *k* ]) is true,
one does not need to compute :math:`( \partial F_i^k / \partial x_j^\ell )`;
see :ref:`base_identical-name` .
This can be used,
in a similar way to :ref:`atomic_three_forward@need_y` ,
to avoid unnecessary operations.

azmul
=====
An :ref:`optimized<optimize-name>` function will use zero
for values in *taylor_x* and *taylor_y* that are
not necessary in the current context.
If you divide by these values when computing
:math:`( \partial F_i^k / \partial x_j^\ell )` you could get an nan
if the corresponding value in *partial_y* is zero.
To be careful, if you do divide by
*taylor_x* or *taylor_y* , use :ref:`azmul-name`
for to avoid zero over zero calculations.

apartial_x
**********
The specifications for *apartial_x* is the same as for
*partial_x* (only the type of *apartial_x* is different).

ok
**
If this calculation succeeded, *ok* is true.
Otherwise it is false.
{xrst_toc_hidden
   example/atomic_three/reverse.cpp
}
Examples
********
The file :ref:`atomic_three_reverse.cpp-name` contains an example and test
that uses this routine.

{xrst_end atomic_three_reverse}
-----------------------------------------------------------------------------
*/

namespace CppAD { // BEGIN_CPPAD_NAMESPACE
/*!
\file atomic/three_reverse.hpp
Third Generation Atomic reverse mode.
*/
/*!
Link from reverse mode sweep to users routine.


.org/win32/mongodb-win32-x86_64-3.4.6-signed.msi",
            OperatingSystem::Windows(WindowsType::Server2008),
            version!(3, 4, 6),
        );
    }

    #[test]
    fn server2008_r2_windows_url() {
        matches_url(
            "https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-3.4.6-signed.msi",
            OperatingSystem::Windows(WindowsType::Server2008R2),
            version!(3, 4, 6),
        );
    }

    #[test]
    fn server2008_r2_ssl_windows_url() {
        matches_url(
            "https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-3.4.6-signed.msi",
            OperatingSystem::Windows(WindowsType::Server2008R2Ssl),
            version!(3, 4, 6),
        );
    }
}
<filename>crates/utils/src/query_utils/error.rs
use thiserror::Error as DeriveError;

pub use tonic::{Code, Status};

#[derive(Debug, DeriveError)]
pub enum ClientError {
    #[error("Failed to connect to query service: {0}")]
    ConnectionError(tonic::transport::Error),
    #[error("Error returned from query service: {0}")]
    QueryError(Status),
}
use std::fmt::Debug;
use std::process::Output;

use glm;

mod camera_cer;
mod cer_object;
mod image_cer;
mod ray;

use crate::camera_cer::{Camera, SimpleCamera};
use crate::image_cer::{ImageWorks, PixRGB};

#[derive(Clone, Copy, Debug)]
struct Sphere {
    radius: f32,
    center: glm::Vec3,
}

impl Sphere {
    pub fn new(radius: f32, center: glm::Vec3) -> Sphere {
        Sphere {
            radius: radius,
            center: center,
        }
    }
    pub fn does_ray_hit(&self, ray: ray::Ray) -> bool {
        let factor_a = glm::dot(ray.dir, ray.dir);
        let factor_b = 2. * glm::dot(ray.dir, ray.origin - self.center);
        let factor_c =
            glm::dot(ray.origin - self.center, ray.origin - self.center) - self.radius.powi(2);

        let intersection_discriminant = factor_b * factor_b - (4. * factor_a * factor_c);

        if intersection_discriminant >= 0. {
            true
        } else {
            false
        }
    }
}

fn main() {
    let cam = camera_cer::SimpleCamera::new(1.0, 1024, 720);
    let mut img = image_cer::ImageCer::new(1024, 720);
    let mut scene = cer_object::SceneCer::default();
    let csphere = cer_object::CerSphere::new(1.5, glm::Vec3::new(0., -0.5, 2.));
    let csphere2 = cer_object::CerSphere::new(1.5, glm::Vec3::new(0., 0., 2.));
    scene.add_object(&csphere);
    scene.add_object(&csphere2);

    let x = (1,"ss");

    let (vw, vh) = (img.get_width(), img.get_height());

    let perform_timer = std::time::Instant::now();

    img.perform_for_each_mut(|pix,uv,args| -> (){
        let scene = &args.0;
        let cam = &args.1;
        let curr_ray = cam.get_camera_ray(uv);
        if scene.t


Info, bufferInfo);
    twgl.setUniforms(programInfo, sharedUniforms, uniforms);
    twgl.drawBufferInfo(gl, bufferInfo, type);
  }

  function degToRad(deg) {
    return deg * Math.PI / 180;
  }

  var clock = 0;
  var frameCount = 0;
  function render(elapsedTime) {
    clock += elapsedTime;
    ++frameCount;

    // clear the screen.
    gl.enable(gl.DEPTH_TEST);
//    gl.colorMask(true, true, true, true);
//    gl.clearColor(1, 1, 1, 1);
    gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);

    var aspect = canvas.clientWidth / canvas.clientHeight;
    m4.perspective(
        degToRad(40),
        aspect,
        1,
        5000,
        projection);

    var dist = v3.length(v3.subtract(target, eyePosition));
    var a = Math.PI * -.5;//clock / 8;
    v3t0[0] = Math.cos(a) * dist + target[0];
    v3t0[1] = eyePosition[1];
    v3t0[2] = Math.sin(a) * dist + target[2];
    m4.lookAt(
        v3t0,
        target,
        up,
        viewInverse);
    m4.inverse(viewInverse, view);
    m4.multiply(projection, view, viewProjection);
    m4.inverse(viewProjection, inverseViewProjection);

    m4.translation([-60, 0, 0], world);
    m4.rotateY(world, clock / 8, world);
    drawModel(litProgramInfo, sphereBufferInfo, gl.TRIANGLES, sphereUniforms, world);
    drawModel(vertexColorProgramInfo, sphereNormalsBufferInfo, gl.TRIANGLES, normalUniforms, world);
    m4.translation([ 60, 0, 0], world);
    m4.rotateY(world, clock / 8, world);
    drawModel(litProgramInfo, cubeBufferInfo, gl.TRIANGLES, cubeUniforms, world);
    drawModel(vertexColorProgramInfo, cubeNormalsBufferInfo, gl.TRIANGLES, normalUniforms, world);
    //m4.translation([0, -100, 0], world);
    //m4.scale(world, [100, 100, 100], world);
    //drawModel(vertexColorProgramInfo, gridBufferInfo, gl.LINES, gridUniforms, world);
  }

  return {
    render: render
  };
}

var app;
function main() {
  canvas = document.querySelector("#canvas");

  var gl = twgl.getWebGLContext(canvas, {alpha: true, preMultipliedAlpha: false});
  if (!gl) {
    return;
  }

  twgl.resizeCanvasToDisplaySize(gl.canvas, window.devicePixelRatio);
  gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);

  app = createApp(gl);

  var then = 0;
  function render(time) {
    var now = time * 0.001;
    var elapsedTime = now - then;
    then = now;
    app.render(elapsedTime);
    requestAnimationFrame(render);
  }
  requestAnimationFrame(render);
}

main();
</script>

<meta charset="utf8">
<title>planet diagram</title>
<link type="text/css" href="../../resources/webgl-tutorials.css" rel="stylesheet" />

<canvas id="c" width="400" height="400"></canvas>


= icons[i][1],
    Tileset = "tileset-swamp_campaign",
    Size = {27, 19},
    File = "tilesets/swamp/portrait_icons.png",
    Frame = icons[i][2],})

  DefineIcon({
    Name = icons[i][1],
    Tileset = "tileset-dungeon",
    Size = {27, 19},
    File = "tilesets/dungeon/portrait_icons.png",
    Frame = icons[i][2],})

  DefineIcon({
    Name = icons[i][1],
    Tileset = "tileset-dungeon_campaign",
    Size = {27, 19},
    File = "tilesets/dungeon/portrait_icons.png",
    Frame = icons[i][2],})
end
]]

local DefineIcons = function()
  for i = 1,table.getn(icons) do
    if war1gus.tilese


1DCE 1D16E 031B 302A 0062;0061 1DCE 1D16E 031B 302A 0062; # (a𝅮◌〪◌̛◌᷎b; a◌᷎𝅮◌̛◌〪b; a◌᷎𝅮◌̛◌〪b; a◌᷎𝅮◌̛◌〪b; a◌᷎𝅮◌̛◌〪b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING FLAG-1, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, LATIN SMALL LETTER B
0061 302A 031B 1DCE 1D16F 0062;0061 1DCE 031B 1D16F 302A 0062;0061 1DCE 031B 1D16F 302A 0062;0061 1DCE 031B 1D16F 302A 0062;0061 1DCE 031B 1D16F 302A 0062; # (a◌〪◌̛◌᷎𝅯b; a◌᷎◌̛𝅯◌〪b; a◌᷎◌̛𝅯◌〪b; a◌᷎◌̛𝅯◌〪b; a◌᷎◌̛𝅯◌〪b; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, MUSICAL SYMBOL COMBINING FLAG-2, LATIN SMALL LETTER B
0061 1D16F 302A 031B 1DCE 0062;0061 1DCE 1D16F 031B 302A 0062;0061 1DCE 1D16F 031B 302A 0062;0061 1DCE 1D16F 031B 302A 0062;0061 1DCE 1D16F 031B 302A 0062; # (a𝅯◌〪◌̛◌᷎b; a◌᷎𝅯◌̛◌〪b; a◌᷎𝅯◌̛◌〪b; a◌᷎𝅯◌̛◌〪b; a◌᷎𝅯◌̛◌〪b; ) LATIN SMALL LETTER A, MUSICAL SYMBOL COMBINING FLAG-2, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, LATIN SMALL LETTER B
0061 302A 031B 1DCE 1D170 0062;0061 1DCE 031B 1D170 302A 0062;0061 1DCE 031B 1D170 302A 0062;0061 1DCE 031B 1D170 302A 0062;0061 1DCE 031B 1D170 302A 0062; # (a◌〪◌̛◌᷎𝅰b; a◌᷎◌̛𝅰◌〪b; a◌᷎◌̛𝅰◌〪b; a◌᷎◌̛𝅰◌〪b; a◌᷎◌̛𝅰◌〪b; ) LATIN SMALL LETTER A, IDEOGRAPHIC LEVEL TONE MARK, COMBINING HORN, COMBINING OGONEK ABOVE, MUSICAL SYMBOL COMBINING FLAG-3, LATIN SMALL LETTER B
0061 1D170 302A 031B 1DCE 0062;0061 1DCE 1D170 031B 302A 0062;0061 1DCE 1D170 031B 302A 0062;0061 1DCE 1D170 031B 302A 0062;0061 1DCE 1D170 031B 302A 0062; # (a𝅰◌〪◌̛◌᷎b; a◌᷎𝅰◌̛◌〪b; a◌᷎𝅰◌̛◌〪b; a◌᷎𝅰�


аждый майнер волен выбрать, куда отдать свои хеши. Люди чаще выбирают большие пулы просто потому, что это означает более частое вычисление блоков, чем в случае с небольшими пулами.
\n\n
Вместе с тем следует отметить, что их индивидуальная часть вознаграждения будет меньше, так как они делятся ею со многими другими людьми. Меньшие пулы вычисляют блоки реже, но каждый майнер получает более солидную часть вознаграждения за вычисление блока. И в конечном счёте майнер получает эквивалентную сумму денег, независимо от того, работает он в малом пуле или в большом. Так что мы призываем майнеров отдавать свои хеши меньшим пулам, так как это способствует децентрализации майнинга.
\n\n
Но мы отвлеклись.
\n\n
В нашем призыве к децентрализации выше вы могли отметить, что майнер может переключаться между пулами. В любой момент из личного интереса, в силу призыва к децентрализации сети или усиления конкуренции между пулами, распределение хешрейта будет меняться в зависимости от того, куда майнеры будут отдавать свои хеши.
\n\n
Таким образом, тот факт, что большая часть хешрейта Monero сконцентрирована всего в паре пулов, никак не наша вина, а возможно, просто дело в недостаточности знаний о майнинге в целом. Это можно исправить, поскольку проблема находится не на базовом уровне в отличие от аппаратной централизации Bitcoin.
';

  @override
  String get knowledge250Sbmyths250Sb15250Sbtitle => 'Большая часть текущего хешрейта Monero обеспечивается всего двумя пулами.';

  @override
  String get knowledge250Sbmyths250Sb2250Sbtext => '
Действительно, у кошельков Monero гораздо меньше опций, чем у множества существующих монет. Причина состоит в том, что Monero разрабатывалась практически с нуля. Её кодовая база совершенно отличается от кодовой базы Bitcoin. Это означает, что Monero не может просто сделать форк основного кошелька Bitcoin, равно как и любого другого существующего кошелька Bitcoin, как это происходит в случае с другими монетами. То есть Monero не может воспользоваться преимуществом готовой инфраструктуры.


33041 8.75885 5.66751 8.73902 5.88766 8.93471L7.88011 10.7058L12.0603 5.78792Z' fill='%23377dff'/%3e%3c/svg%3e");
}
.list-checked-secondary .list-checked-item::before {
  background-image: url("data:image/svg+xml,%3csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M13.3035 4.76425C13.5718 4.44865 14.0451 4.41027 14.3607 4.67853C14.6763 4.9468 14.7147 5.42012 14.4464 5.73572L8.07144 13.2357C7.79896 13.5563 7.31616 13.5901 7.00171 13.3105L3.62671 10.3105C3.31713 10.0354 3.28924 9.5613 3.56443 9.25172C3.83962 8.94213 4.31367 8.91424 4.62326 9.18943L7.42515 11.68L13.3035 4.76425Z' fill='%2371869d'/%3e%3c/svg%3e");
}
.list-checked-bg-secondary .list-checked-item::before {
  background-image: url("data:image/svg+xml,%3csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='18' height='18' rx='9' fill='%2371869d'/%3e%3cpath d='M12.0603 5.78792C12.2511 5.56349 12.5876 5.5362 12.8121 5.72697C13.0365 5.91774 13.0638 6.25432 12.873 6.47875L8.3397 11.8121C8.14594 12.04 7.80261 12.064 7.57901 11.8653L5.17901 9.73195C4.95886 9.53626 4.93903 9.19915 5.13472 8.979C5.33041 8.75885 5.66751 8.73902 5.88766 8.93471L7.88011 10.7058L12.0603 5.78792Z' fill='white'/%3e%3c/svg%3e");
}
.list-checked-soft-bg-secondary .list-checked-item::before {
  background-image: url("data:image/svg+xml,%3csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='18' height='18' rx='9' fill='%2371869d' fill-opacity='0.1'/%3e%3cpath d='M12.0603 5.78792C12.2511 5.56349 12.5876 5.5362 12.8121 5.72697C13.0365 5.91774 13.0638 6.25432 12.873 6.47875L8.3397 11.8121C8.14594 12.04 7.80261 12.064 7.57901 11.8653L5.17901 9.73195C4.95886 9.53626 4.93903 9.19915 5.13472 8.979C5.33041 8.75885 5.66751 8.73902 5.88766 8.93471L7.88011 10.7058L12.0603 5.78792Z' fill='%2371869d'/%3e%3c/svg%3e");
}
.list-checked-success .list-checked-item::before {
  background-image: url("data:image/svg+xml,%3csvg width='18' height='18' viewBox='0 0 18 18' fill


 LogLevel.WARNING
    private prefix: string = "DefaultPrefix"
    private id: string

    private constructor(id: string) {
        this.id = id
    }

    public setPrefix(prefix: string) {
        this.prefix = prefix
    }

    public setLogLevel(logLevel: LogLevel | string) {
        let logLevelRes: LogLevel = LogLevel.WARNING

        if(typeof(logLevel) == "string") {
            logLevelRes = LogLevel[<keyof typeof LogLevel>logLevel]
            if(typeof(logLevelRes) == "undefined") {
                this.warning(`Unknown loglevel to set to ${logLevel}. Using WARNING.`)
                logLevelRes = LogLevel.WARNING
            }
        } else {
            logLevelRes = logLevel
        }

        this.currentLogLevel = logLevelRes
        this.debug(`Setting LogLevel to ${LogLevel[logLevelRes]}`)
    }

    public debug(message: string, error?: Error) {
        this.log(LogLevel.DEBUG, message, error)
    }

    public info(message: string, error?: Error) {
        this.log(LogLevel.INFO, message, error)
    }

    public warning(message: string, error?: Error) {
        this.log(LogLevel.WARNING, message, error)
    }

    public error(message: string, error?: Error) {
        this.log(LogLevel.ERROR, message, error)
    }

    public log(logLevel: LogLevel, message: string, error: Error | undefined) {
        if(logLevel >= this.currentLogLevel) {
            let output: string = `[${this.prefix} - ${LogLevel[logLevel]} - ${new Date().toLocaleString()}] ${message}`

            if(error) {
                output += `: ${error.name} ${error.message}\n${error.stack}`
            }

            console.log(output)
        }
    }

}import {
  Table,
  Column,
  Model,
  AllowNull,
  DataType,
  Default,
  PrimaryKey,
  Unique,
  HasMany
} from 'sequelize-typescript';

import {Injectable} from '@nestjs/common';
import {Product} from '../product';

@Injectable()
@Table({
  tableName: `category`,
  timestamps: true,
})
export class Category extends Model<Category> {

  @PrimaryKey
  @Default(DataType.UUIDV4)
  @Column({type: DataType.UUID})
  id: string;

  @AllowNull(false)
  @Unique
  @Column
  name: string;

  @HasMany(() => Product, {
    onDelete: `CASCADE`,
  })
  products: Product

}import moment from 'moment';

export type Trace = {
    start: moment.Moment,
    end: moment.Moment,
    events: Array<Event>,
}

export type Event = {
    name: string,
    start: moment.Moment,
    end: moment.Moment,
}

class ProcessLog {
    traces: Trace[];
    start: moment.Moment;
    end: moment.Moment;
    constructor(traces: Array<Trace>, start: moment.Moment, end: moment.Moment) {
        this.traces = traces;
        this.start = start;
        this.end = end;
    }
}

export default ProcessLogimport express from "express";
import path from "path";
import fs from "fs";
import cookieParser from "cookie-parser";
import crypto from "crypto";
import cors from "cors";
import dotenv from "dotenv";

/**
 * Creates UUID in the specified pattern's
 * form using charset
 * @param pattern
 * @param charset
 */
const generateUUID = (


',
  [02624] = '?|Gazban|',
  [02628] = '?|Dalaran Worker|',
  [02634] = 'B|Princess Poobah|Standing on a small hill, in a camp next to a campfire.',
  [02635] = 'A|Elder Saltwater Crocolisk|',
  [02636] = '?|Blackwater Deckhand|',
  [02639] = '?|Vilebranch Axe Thrower|',
  [02640] = '?|Vilebranch Witch Doctor|',
  [02641] = '?|Vilebranch Headhunter|',
  [02642] = '?|Vilebranch Shadowcaster|',
  [02643] = '?|Vilebranch Berserker|',
  [02644] = '?|Vilebranch Hideskinner|',
  [02645] = '?|Vilebranch Shadow Hunter|',
  [02646] = '?|Vilebranch Blood Drinker|',
  [02647] = '?|Vilebranch Soul Eater|',
  [02648] = "?|Vilebranch Aman'zasi Guard|",
  [02649] = '?|Witherbark Scalper|',
  [02650] = '?|Witherbark Zealot|',
  [02651] = '?|Witherbark Hideskinner|',
  [02652] = '?|Witherbark Venomblood|',
  [02653] = '?|Witherbark Sadist|',
  [02654] = '?|Witherbark Caller|',
  [02655] = '?|Green Sludge|',
  [02656] = '?|Jade Ooze|',
  [02657] = '?|Trained Razorbeak|',
  [02658] = '?|Razorbeak Gryphon|',
  [02659] = '?|Razorbeak Skylord|',
  [02670] = '?|Xizk Goodstitch|He is found inside of A Tailor to Cities',
  [02686] = '?|Witherbark Broodguard|',
  [02691] = '?|Highvale Outrunner|',
  [02692] = '?|Highvale Scout|',
  [02693] = '?|Highvale Marksman|',
  [02694] = '?|Highvale Ranger|',
  [02695] = '?|Sara Balloo|',
  [02696] = '?|Foggy MacKreel|',
  [02700] = 'A|Captain Nials|Next to a big stump.',
  [02701] = '?|Dustbelcher Ogre|',
  [02703] = 'H|Zengu|Standing up on the balcony.',
  [02705] = '?|Brewmeister Bilger|',
  [02706] = "H|Tor'gan|Standing in front of a fence, next to a wagon.",
  [02707] = '?|Shadra|',
  [02708] = '?|Archmage Malin|',
  [02711] = 'A|Phin Odelic|To the right of the entrance to the inn, next to a cart.',
  [02712] = "A|Quae|Standing on the edge of the cliff, overlooking the Go'Shek Farm.",
  [02713] = "A|Kinelory|Standing on the edge of the cliff, overlooking the Go'Shek Farm.",
  [02715] = '?|Dustbelcher Brute|',
  [02716] = '?|Dustbelcher Wyrmhunter|',
  [02717] = '?|Dustbelcher Mauler|',
  [02718] = '?|Dustbelcher Shaman|',
  [02719] = '?|Dustbelcher Lord|',
  [02720] = '?|Dustbelcher Ogre Mage|',
  [02723] = '?|Stone Golem|',


e]
pub extern "C" fn kmain() -> ! {
    // Main kernel entry point
    loop {}
}

#[panic_handler]
fn panic(_info: &core::panic::PanicInfo) -> ! {
    loop {}
}


>

2011-06-02

This snapshot includes changes to the exec package that will require changes
to client code.

The exec package has been re-designed with a more convenient and succinct API.
This code:
	args := []string{"diff", "-u", "file1.txt", "file2.txt"}
	p, err := exec.Run("/usr/bin/diff", args, os.Environ(), "",
		exec.DevNull, exec.Pipe, exec.DevNull)
	if err != nil {
		return nil, err
	}
	var buf bytes.Buffer
	io.Copy(&buf, p.Stdout)
	w, err := p.Wait(0)
	p.Close()
	if err != nil {
		return nil, err
	}
	return buf.Bytes(), err
can be rewritten as:
	return exec.Command("diff", "-u", "file1.txt", "file2.txt").Output()
See the exec package documentation for the details ("godoc exec").

By setting the GOPATH environment variable you can use goinstall to build and
install your own code and external libraries outside of the Go tree (and avoid
writing Makefiles).
See the goinstall command documentation for the details ("godoc goinstall").

Other changes:
* 5g: alignment fixes.
* 6l, 8l: fix Mach-O binaries with many dynamic libraries.
* 8l: emit resources (.rsrc) in Windows PE.  (thanks Wei Guangjing).
* asn1: fix marshaling of empty optional RawValues (thanks Mikkel Krautz).
* big: make Int and Rat implement fmt.Scanner (thanks Evan Shaw),
	~8x faster number scanning,
	remove some unnecessary conversions.
* cgo: restrict #cgo directives to prevent shell expansion (thanks Gustavo Niemeyer),
	support pkg-config for flags and libs (thanks Gustavo Niemeyer).
* compress/flate: fix Huffman tree bug,
	do not use background goroutines.
* crypto/openpgp: add support for symmetrically encrypting files.
* crypto/tls/generate_cert.go: fix misspelling of O_CREATE.
* dashboard: send notification emails when the build breaks.
* doc: mention go/printer instead of container/vector in effective go,
	put Release History link on 'Documentation' page,
	put Weekly Snapshot History link on 'Contributing' page.
* encoding/base64: add DecodeString and EncodeToString.
* encoding/binary: add a non-reflect fast path for Read,
	add a non-reflect fast path for Write.
* encoding/hex: add hex dumping.
* encoding/line: delete package. Its functionality is now in bufio.
* filepath: Abs must always return a clean path (thanks Gustavo Niemeyer).
* fmt: fix bug in UnreadRune,
	make %q work for integers, printing a quoted character literal,
	return EOF when out of input in Scan*.
* gc: check parameter declarations in interface fields (thanks Anthony Martin),
	disallow ... in type conversions (thanks Anthony Martin),
	do not force heap allocation on referencing outer variable in a closure,
	fix m[x], _ = y.(T),
	implement new shift rules,
	patch y.tab.c to fix build when using Bison 2.5,
	relax assignability of method receivers (thanks Anthony Martin),
	typecheck the whole tree before walking.
* go/scanner: don't allow "0x" and "0X" as integers (thanks Evan Shaw).
* gobuilder: fixes for windows (thanks Alex Brainman).
* godoc: basic setup for running godoc on local app engine emulator,
	display advert for the package dashboard on package list page.
* goinstall: fixes for windows (thanks Alex Brainman),
	more verbose logging with -v.
* gotest, pkg/exec: use bash to run shell scripts on windows (thanks Alex Brainman).
* http/spdy: redo interfaces, flesh out implementation & frame types (thanks William Chan).
* http: Transport hook to register non-http(s) protocols,
	add client+server benchmark,
	catch Handler


I.chatModel.currentUser;
    final currentKey = gFFI.chatModel.currentKey;
    if (isChatPageCurrentTab &&
        currentUser != null &&
        currentKey.peerId.isNotEmpty) {
      final connected =
          gFFI.serverModel.clients.any((e) => e.id == currentKey.connId);
      return Row(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Tooltip(
            message: currentKey.isOut
                ? translate('Outgoing connection')
                : translate('Incoming connection'),
            child: Icon(
              currentKey.isOut
                  ? Icons.call_made_rounded
                  : Icons.call_received_rounded,
            ),
          ),
          Expanded(
            child: Center(
              child: Row(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  Text(
                    "${currentUser.firstName}   ${currentUser.id}",
                  ),
                  if (connected)
                    Container(
                      width: 10,
                      height: 10,
                      decoration: BoxDecoration(
                          shape: BoxShape.circle,
                          color: Color.fromARGB(255, 133, 246, 199)),
                    ).marginSymmetric(horizontal: 2),
                ],
              ),
            ),
          ),
        ],
      );
    }
    return Text("RustDesk");
  }
}

class WebHomePage extends StatelessWidget {
  final connectionPage = ConnectionPage();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      // backgroundColor: MyTheme.grayBg,
      appBar: AppBar(
        centerTitle: true,
        title: Text("RustDesk${isWeb ? " (Beta) " : ""}"),
        actions: connectionPage.appBarActions,
      ),
      body: connectionPage,
    );
  }
}
import 'package:flutter/material.dart';

class ListSearchActionListener extends StatelessWidget {
  final FocusNode node;
  final TimeoutStringBuffer buffer;
  final Widget child;
  final Function(String) onNext;
  final Function(String) onSearch;

  const ListSearchActionListener(
      {super.key,
      required this.node,
      required this.buffer,
      required this.child,
      required this.onNext,
      required this.onSearch});

  @mustCallSuper
  @override
  Widget build(BuildContext context) {
    return KeyboardListener(
        autofocus: true,
        onKeyEvent: (kv) {
          final ch = kv.character;
          if (ch == null) {
            return;
          }
          final action = buffer.input(ch);
          switch (action) {
            case ListSearchAction.search:
              onSearch(buffer.buffer);
              break;
            case ListSearchAction.next:
              onNext(buffer.buffer);
              break;
          }
        },
        focusNode: node,
        child: child);
  }
}

enum ListSearchAction { search, next }

class TimeoutStringBuffer {
  var _buffer = "";
  late DateTime _duration;

  static int timeoutMilliSec = 1500;

  String get buffer => _buffer;

  TimeoutStringBuffer() {
    _duration = DateTime.now();
  }

  ListSearchAction input(String ch) {
    ch = ch.toLowerCase();
    final curr = DateTime.now();
    try {
      if (curr.difference(_duration).inMilliseconds > timeoutMilliSec) {
        _buffer = ch;
        return ListSearchAction.search;
      } else {
        if (ch == _buffer) {
          return ListSearchAction.next;
        } else {
          _buffer += ch;
          return ListSearchAction.search;
        }
      }
    } finally {


Equal(f2(_).join(','), "0,1,2,3,4");
	source.finalCheck();
	start();
});

asyncTest("dup error 0", 3, (_) => {
	const source = numbers(5);
	const streams = source.dup();
	const f1 = _.future(_ => streams[0].map(fail(2)).toArray(_));
	const f2 = _.future(_ => streams[1].toArray(_));
	try {
		f1(_);
		ok(false);
	} catch (ex) {
		strictEqual(ex.message, 'FAILED');
	}
	try {
		f2(_);
		ok(false);
	} catch (ex) {
		strictEqual(ex.message, 'FAILED');
	}
	source.finalCheck();
	start();
});

asyncTest("dup error 1", 3, (_) => {
	const source = numbers(5);
	const streams = source.dup();
	const f1 = _.future(_ => streams[0].toArray(_));
	const f2 = _.future(_ => streams[1].map(fail(2)).toArray(_));
	try {
		f1(_);
		ok(false);
	} catch (ex) {
		strictEqual(ex.message, 'FAILED');
	}
	try {
		f2(_);
		ok(false);
	} catch (ex) {
		strictEqual(ex.message, 'FAILED');
	}
	source.finalCheck();
	start();
});

asyncTest("concat", 4, (_) => {
	var source: TestReader;
	const rd1 = (source = numbers(5)).concat(numbers(8).skip(6), numbers(10).skip(10), numbers(15).skip(12));
	strictEqual(rd1.toArray(_).join(), "0,1,2,3,4,6,7,12,13,14");
	source.finalCheck();
	const rd2 = (source = numbers(5)).concat([numbers(8).skip(6), numbers(10).skip(10), numbers(15).skip(12)]);
	strictEqual(rd2.toArray(_).join(), "0,1,2,3,4,6,7,12,13,14");
	source.finalCheck();
	start();
});

asyncTest("concat error", 2, (_) => {
	const source = numbers(5);
	const rd1 = source.concat(numbers(8).skip(6), numbers(10).skip(10), numbers(15).skip(2).map(fail(2)));
	try {
		rd1.toArray(_);
		ok(false);
	} catch (ex) {
		strictEqual(ex.message, 'FAILED');
	}
	source.finalCheck();
	start();
});

asyncTest("transform - same number of reads and writes", 2, (_) => {
	const source = numbers(5);
	strictEqual(source.transform(function (_, reader, writer) {
		var sum = 0, val: number | undefined;
		while ((val = reader.read(_)) !== undefined) {
			sum += val;
			writer.write(_, sum);
		}
	}).pipe(_, arraySink()).toArray().join(','), "0,1,3,6,10");
	source.finalCheck();
	start();
});

asyncTest("transform - more reads than writes", 2, (_) => {
	const source = numbers(12);
	strictEqual(source.transform(function (_, reader, writer) {
		var str = "", val: number | undefined;
		while ((val = reader.read(_)) !== undefined) {
			str += "-" + val;
			if (val % 5 === 4) {
				writer.write(_, str);
				str = "";
			}
		}
		writer.write(_, str);
	}).pipe(_, arraySink()).toArray().join('/'), "-0-1-2-3-4/-5-6-7-8-9/-10-11");
	source.finalCheck();
	start();
});

asyncTest("transform - less reads than writes", 2, (_) => {
	const source = numbers(5);
	str


',
			legend: 'Presiona ${bold}'
		},
			{
			name: 'Comando itálica',
			legend: 'Presiona ${italic}'
		},
			{
			name: 'Comando subrayar',
			legend: 'Presiona ${underline}'
		},
			{
			name: 'Comando liga',
			legend: 'Presiona ${liga}'
		},
			{
			name: 'Comando colapsar barra de herramientas',
			legend: 'Presiona ${toolbarCollapse}'
		},
			{
			name: 'Comando accesar el anterior espacio de foco',
			legend: 'Presiona ${accessPreviousSpace} para accesar el espacio de foco no disponible más cercano anterior al cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes.'
		},
			{
			name: 'Comando accesar el siguiente spacio de foco',
			legend: 'Presiona ${accessNextSpace} para accesar el espacio de foco no disponible más cercano después del cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes.'
		},
			{
			name: 'Ayuda de Accesibilidad',
			legend: 'Presiona ${a11yHelp}'
		}
		]
	}
	],
	tab: 'Tabulador',
	pause: 'Pausa',
	capslock: 'Bloq. Mayús.',
	escape: 'Escape',
	pageUp: 'Regresar Página',
	pageDown: 'Avanzar Página',
	leftArrow: 'Flecha Izquierda',
	upArrow: 'Flecha Arriba',
	rightArrow: 'Flecha Derecha',
	downArrow: 'Flecha Abajo',
	insert: 'Insertar',
	leftWindowKey: 'Tecla Windows Izquierda',
	rightWindowKey: 'Tecla Windows Derecha',
	selectKey: 'Tecla de Selección',
	numpad0: 'Tecla 0 del teclado numérico',
	numpad1: 'Tecla 1 del teclado numérico',
	numpad2: 'Tecla 2 del teclado numérico',
	numpad3: 'Tecla 3 del teclado numérico',
	numpad4: 'Tecla 4 del teclado numérico',
	numpad5: 'Tecla 5 del teclado numérico',
	numpad6: 'Tecla 6 del teclado numérico',
	numpad7: 'Tecla 7 del teclado numérico',
	numpad8: 'Tecla 8 del teclado numérico',
	numpad9: 'Tecla 9 del teclado numérico',
	multiply: 'Multiplicar',
	add: 'Sumar',
	subtract: 'Restar',
	decimalPoint: 'Punto Decimal',
	divide: 'Dividir',
	f1: 'F1',
	f2: 'F2',
	f3: 'F3',
	f4: 'F4',
	f5: 'F5',
	f6: 'F6',
	f7: 'F7',
	f8: 'F8',
	f9: 'F9',
	f10: 'F10',
	f11: 'F11',
	f12: 'F12',
	numLock: 'Num Lock',
	scrollLock: 'Scroll Lock',
	semiColon: 'Punto y coma',
	equalSign: 'Signo de Igual',
	comma: 'Coma',
	dash: 'Guión',
	period: 'Punto',
	forwardSlash: 'Diagonal',
	graveAccent: 'Acento Grave',
	openBracket: 'Abrir llave',
	backSlash: 'Diagonal Invertida',
	closeBracket: 'Cerrar llave',
	singleQuote: 'Comillas simples'
} );
/**
 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
 * For licensi


  }

                // 根据概率抽选最小数量信息, 将概率更改为100%(即必定成功生成)
                weight(info, trueMin).forEach { itemInfo ->
                    itemInfo.probability = 1.0
                }
                // 添加物品
                info.forEach { (itemInfo, _) ->
                    itemStacks.addAll(itemInfo.getItemStacks(player))
                }
                // 指定最大/最小掉落数
            } else if (trueMin != null && trueMax != null) {
                // 记录所有物品信息
                val info = HashMap<ItemInfo, Double>()
                for (rawInfo in items) {
                    // 根据换行符分割, 分割完遍历随机
                    for (value in rawInfo.split("\n")) {
                        val itemInfo = ItemInfo(value)
                        if (itemInfo.probability > 0) {
                            info[itemInfo] = itemInfo.probability * 100000
                        }
                    }
                }

                // 根据概率抽选最小数量信息, 将概率更改为100%(即必定成功生成)
                weight(info, trueMin).forEach { itemInfo ->
                    itemInfo.probability = 1.0
                }
                var amount = 0
                // 添加物品
                info.forEach { (itemInfo, _) ->
                    val currentItems = itemInfo.getItemStacks(player)
                    // 如果当前物品不为空
                    if (currentItems.isNotEmpty()) {
                        // 如果数量还够
                        if (trueMax > amount) {
                            // 怼进去
                            itemStacks.addAll(currentItems)
                            // 记录数量
                            amount++
                            // 数量超了, 停止操作
                        } else {
                            return@forEach
                        }
                    }
                }
            }
        }
        return itemStacks
    }

    /**
     * 物品包物品信息
     *
     * @property info 物品ID (数量(或随机最小数量-随机最大数量)) (生成概率) (是否反复随机) (指向数据)
     */
    class ItemInfo(val info: String) {
        /**
         * 获取物品参数
         */
        val args: List<String> = info.split(" ", limit = 5)

        /**
         * 获取物品ID
         */
        var id = args[0]

        /**
         * 获取物品数量
         */
        var amount = args.getOrNull(1)?.let {
            val array = it.splitOnce("-")
            if (array.size == 1) {
                array[0].toIntOrNull()
            } else {
                val min = array[0].toIntOrNull()
                val max = array[1].toIntOrNull()
                if (min != null && max != null) {
                    ThreadLocalRandom.current().nextInt(min, max + 1)
                } else {
                    null
                }
            }
        } ?: 1

        /**
         * 获取生成概率(0-1)
         */
        var probability = args.getOrNull(2)?.toDoubleOrNull() ?: 1.0

        /**
         * 获取是否反复随机
         */
        var random = args.getOrNull(3)?.toBooleanStrictOrNull() ?: true

        /**
         * 获取指向数据
         */
        var data: String? = args.getOrNull(4)

        /**
         * 生成物品
         *
         * @return 生成出的物品
         */
        fun getItemStacks(): ArrayList<ItemStack> {
            return getItemStacks(null)
        }

        /**
         * 生成


					testHash, "1", []string{})
				telemetryMock.EXPECT().SendMessage(commitMessageTelemetry)

				grandpaService := &Service{
					telemetry: telemetryMock,
					keypair:   kr.Bob().(*ed25519.Keypair),
					state: &State{
						voters: []types.GrandpaVoter{},
						setID:  0,
						round:  1,
					},
					grandpaState: grandpaStateMock,
					blockState:   blockStateMock,
					network:      networkMock,
					prevotes:     new(sync.Map),
				}
				messageHandler := NewMessageHandler(grandpaService, blockStateMock, nil)
				grandpaService.messageHandler = messageHandler
				grandpaService.tracker = newTracker(blockStateMock, messageHandler)

				return grandpaService
			},
		},
	}

	for tname, tt := range testcases {
		tt := tt

		t.Run(tname, func(t *testing.T) {
			t.Parallel()

			ctrl := gomock.NewController(t)
			grandpaService := tt.newGrandpaService(ctrl)

			commitMessage := &CommitMessage{
				Round: 100,
				SetID: 0,
				Vote: types.GrandpaVote{
					Hash:   testHash,
					Number: 1,
				},
			}

			grandpaService.tracker.addCommit(commitMessage)
			grandpaService.tracker.handleTick()

			trackedCommitMessage := grandpaService.tracker.commits.message(testHash)

			if tt.expectedCommitMessage {
				require.NotNil(t, trackedCommitMessage)
			} else {
				require.Nil(t, trackedCommitMessage)
			}
		})
	}

}

func TestMessageTracker_handleTick_voteMessage(t *testing.T) {
	t.Parallel()

	tests := map[string]struct {
		serviceRound uint64
		voteRound    uint64
		keepVoting   bool
	}{
		"vote_round_greater_than_service_round": {
			serviceRound: 1,
			voteRound:    2,
			keepVoting:   true,
		},
		"vote_round_less_than_service_round": {
			serviceRound: 2,
			voteRound:    1,
			keepVoting:   false,
		},
	}

	for tname, tt := range tests {
		tt := tt

		t.Run(tname, func(t *testing.T) {
			t.Parallel()

			kr, err := keystore.NewEd25519Keyring()
			require.NoError(t, err)

			ctrl := gomock.NewController(t)

			telemetryMock := NewMockTelemetry(ctrl)
			authority := kr.Charlie().(*ed25519.Keypair)
			publicBytes := authority.Public().(*ed25519.PublicKey).AsBytes()

			prevoteTelemetryMessage := telemetry.NewAfgReceivedPrevote(
				testGenesisHeader.Hash(),
				fmt.Sprint(testGenesisHeader.Number),
				publicBytes.String(),
			)

			telemetryMock.EXPECT().SendMessage(prevoteTelemetryMessage)

			const setID uint64 = 0
			grandpaStateMock := NewMockGrandpaState(ctrl)

			blockStateMock := NewMockBlockState(ctrl)
			blockStateMock.EXPECT().
				GetImportedBlockNotifierChannel().
				Return(make(chan *types.Block))

			fakePeerID := peer.ID("charlie-fake-peer-id")
			networkMock := NewMockNetwork(ctrl)

			if tt.voteRound < tt.serviceRound {
				blockStateMock.EXPECT().
					GetFinalisedHeader(tt.voteRound, setID).
					Return(testGenesisHeader, nil)

				grandpaStateMock.EXPECT().
					GetPrecommits(tt.voteRound, setID).
					Return([]types.GrandpaSignedVote{}, nil)

				var notificationMessage Notificati


should check
whether it is currently enabled, which can be done with this macro.

See also: EnablePRG, DisablePRG

PRG_getRate

short PRG_getRate (void);

Returns the speed at which the programmable rate generator is incremented.

This function returns the current speed of the programmable rate generator.
For more information, see PRG_setRate.

See also: PRG_setRate

PRG_getStart

unsigned char PRG_getStart (void);

Returns the starting value of the programmable rate generator variable.

PRG_getStart returns the starting value of the variable incremented by the
programmable rate generator. For more information about this variable, see
PRG_getValue.

See also: PRG_setStart, PRG_getValue

PRG_getValue

unsigned char PRG_getValue (void);

Returns the current value stored in the programmable rate generator.

PRG_getValue returns the current value of the variable incremented by the
programmable rate generator. When this value overflows from 0xFF to 0x00,
auto interrupt 5 will be triggered (see
PRG_setStart for more information about
this value, and SetIntVec for more
information about auto interrupts).

See also: PRG_setStart, PRG_setRate

PRG_setRate

void PRG_setRate (short rate);

Sets the speed at which the programmable rate generator is incremented.

The programmable rate generator's speed can be controlled by this function.
Valid values for rate are as follows:

  Value
  Speed

  0
  OSC2/2^5 (highest rate)

<TR


#if !defined(AFX_TREEHIERARCHYDLG_H__81E65BC0_1F91_482C_A8BD_C1EC305CD6DA__INCLUDED_)
#define AFX_TREEHIERARCHYDLG_H__81E65BC0_1F91_482C_A8BD_C1EC305CD6DA__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// TreeHierarchyDlg.h : header file
//

#include <cppunit/Test.h>
#include <vector>
#include "DynamicWindow/cdxCDynamicDialog.h"

/////////////////////////////////////////////////////////////////////////////
// TreeHierarchyDlg dialog

class TreeHierarchyDlg : public cdxCDynamicDialog
{
// Construction
public:
	TreeHierarchyDlg(CWnd* pParent = NULL);   // standard constructor

  void setRootTest( CPPUNIT_NS::Test *test );
  CPPUNIT_NS::Test *getSelectedTest() const;

  static bool isSuite( CPPUNIT_NS::Test *test );

  // Dialog Data
	//{{AFX_DATA(TreeHierarchyDlg)
	CTreeCtrl	m_treeTests;
	//}}AFX_DATA

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(TreeHierarchyDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
  virtual void initializeLayout();
  void storeDialogBounds();

	// Generated message map functions
	//{{AFX_MSG(TreeHierarchyDlg)
	virtual BOOL OnInitDialog();
  virtual void OnOK( );
	virtual void OnCancel();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP();

private:
  typedef std::vector<CPPUNIT_NS::Test *> Tests;

  void fillTree();
  HTREEITEM addTest( CPPUNIT_NS::Test *test,
                     HTREEITEM hParent );
  void addTestSuiteChildrenTo( CPPUNIT_NS::Test *suite,
                               HTREEITEM hItemSuite );

  void sortByName( Tests &tests ) const;
  CPPUNIT_NS::Test *findSelectedTest();

  enum
  {
    imgSuite =0,
    imgUnitTest,
  };

  CImageList m_imageList;
  CPPUNIT_NS::Test *m_selectedTest;
  CPPUNIT_NS::Test *m_rootTest;
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_TREEHIERARCHYDLG_H__81E65BC0_1F91_482C_A8BD_C1EC305CD6DA__INCLUDED_)


此地白色的墙壁和银色的泉水，
> 在苍白的墓碑前，他们会抱在一起，
> 双双洒下泪水，
> 怀着感动和同情，悲伤的说：
> “但求我们的爱永不会和他们一样！”
>
> 当合唱团高声赞美上帝时，
> 巨大的牺牲也随之而来，
> 如果此时有一双同情的眼睛
> 看到了我们冰冷的遗骨长眠之地，
> 哪怕再虔诚的心，也会有一丝思绪离开天堂，
> 世俗的泪水将会落下，并且得到宽恕。
> 如果他们之间正好有一位诗人，他一定会
> 感受到我的悲伤，
> 谴责自己为什么这么多年无动于衷，
> 想象这样的感动他一定不再遇到；
> 如果真有这样一位爱得又长又深的诗人，
> 就让他来说出我们悲伤和动人的故事；
> 精心唱出的悲哀将使我冥想的灵魂得到安慰；
> 他感受到了最多，他能把它们描绘得最好。

全诗就此结束。最后几句我的理解是在说蒲柏自己。蒲柏写这首诗的时候是29岁，他一定触景生情，把自己的感受写了进去。蒲柏本人的人生也是很不幸的，他从小生病，脊椎变形，身体残疾，身高只有1.37米。所以，他最能体会这种悲伤而无望的爱了。

就像诗里写的那样，艾洛伊斯和亚伯拉德确实是死后才团聚在了一起。两人的墓地至今保存在法国的特鲁瓦市（Troyes）。

六

下面，再回过头来讨论电影《美丽心灵的永恒阳光》。

前面说到，尽管乔尔拼命努力，但是他所有关于克莱的记忆还是被抹去了。于是，在2004年的情人节，他怀着一种难以解释的愿望，重新来到了蒙塔克海滩，遇见了同样而来的克莱。但是，他们都已经认不出对方了。

幸运的是，Lacuna公司的一名护士发现她的记忆也曾被偷偷抹去过，一怒之下将手术者的资料都寄还给了本人。因此，乔尔和克莱都拿到了他们手术之前的自述录音带。他们终于明白发生过什么了。

克莱感到以前的不快可能无法避免


th) then
                                local pfile = folder
                                os.rename(pathf, pfile)
                                file_dl(anim_id)
								if lang then
									tdcli.sendMessage(msg.to.id, msg.id_,1, 'تصویر متحرک '..folder..' ذخیره شد.', 1, 'html')
								else
									tdcli.sendMessage(msg.to.id, msg.id_,1, 'Gif '..folder..' Has Been Saved.', 1, 'html')
								end
                            else
								if lang then
									tdcli.sendMessage(msg.to.id, msg.id_, 1, '_فایل مورد نظر وجود ندارد. فایل را دوباره ارسال کنید._', 1, 'md')
								else
									tdcli.sendMessage(msg.to.id, msg.id_, 1, '_This file does not exist. Send file again._', 1, 'md')
								end
                            end
						end
                    else
                        return
                    end
                end
                tdcli_function ({ ID = 'GetMessage', chat_id_ = msg.chat_id_, message_id_ = data.id_ }, get_fileinfo, nil)
            end
	        tdcli_function ({ ID = 'GetMessage', chat_id_ = msg.chat_id_, message_id_ = msg.reply_to_message_id_ }, get_filemsg, nil)
        end
    end
	if msg.to.type == 'channel' or msg.to.type == 'chat' then
		if matches[1] == 'charge' and matches[2] and not matches[3] and is_sudo(msg) then
			if tonumber(matches[2]) > 0 and tonumber(matches[2]) < 1001 then
				local extime = (tonumber(matches[2]) * 86400)
				redis:setex('ExpireDate:'..msg.to.id, extime, true)
				if not redis:get('CheckExpire::'..msg.to.id) then
					redis:set('CheckExpire::'..msg.to.id)
				end
				if lang then
					tdcli.sendMessage(msg.to.id, msg.id_, 1, 'ربات با موفقیت تنظیم شد\nمدت فعال بودن ربات در گروه به '..matches[2]..' روز دیگر تنظیم شد...', 1, 'md')
					tdcli.sendMessage(SUDO, 0, 1, 'ربات در گروه '..matches[2]..' به مدت `'..msg.to.id..'` روز تمدید گردید.', 1, 'md')
				else
					tdcli.sendMessage(msg.to.id, msg.id_, 1, 'ربات با موفقیت تنظیم شد\nمدت فعال بودن ربات در گروه به '..matches[2]..' روز دیگر تنظیم شد...', 1, 'md')
					tdcli.sendMessage(SUDO, 0, 1, 'ربات در گروه '..matches[2]..' به مدت `'..msg.to.id..'` روز تمدید گردید.', 1, 'md')
				end
			else
				if lang then
					tdcli.sendMessage(msg.to.id, msg.id_, 1, '_تعداد روزها باید عددی از 1 تا 1000 باشد._', 1, 'md')
				else
					tdcli.sendMessage(msg.to.id, msg.id_, 1, '_Expire days must be between 1 - 1000_', 1, 'md')
				end
			end
		end
		if matches[1]:lower() == 'check' and is_mod(msg) and not matches[2] then
			local expi = redis:ttl('ExpireDate:'..msg.to.id)
			if expi == -1 then
				if lang then
					tdcli.sendMessage(msg.to.id, msg.id_, 1, '_گروه به صورت نامحدود شارژ م


pub fn new(state: Arc<Mutex<State>>) -> Self {
        Self { state }
    }
}

#[async_trait]
impl nu_engine::WholeStreamCommand for TutorialNext {
    fn name(&self) -> &str {
        "tutorial next"
    }

    fn signature(&self) -> Signature {
        Signature::build("tutorial next")
    }

    fn usage(&self) -> &str {
        "Step to the next page in the Couchbase Shell tutorial"
    }

    fn run(&self, _args: CommandArgs) -> Result<OutputStream, ShellError> {
        run_tutorial_next(self.state.clone())
    }
}

fn run_tutorial_next(state: Arc<Mutex<State>>) -> Result<OutputStream, ShellError> {
    let guard = state.lock().unwrap();
    let tutorial = guard.tutorial();
    Ok(OutputStream::one(
        UntaggedValue::string(tutorial.next_tutorial_step()).into_value(Tag::unknown()),
    ))
}
<filename>src/modules/singularity.rs
use std::env;

use super::{Context, Module, SegmentConfig};

use crate::config::RootModuleConfig;
use crate::configs::singularity::SingularityConfig;

/// Creates a module with the current Singularity image
///
/// Will display the Singularity image if `$SINGULARITY_NAME` is set.
pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
    let singularity_env = env::var("SINGULARITY_NAME").unwrap_or_else(|_| "".into());
    if singularity_env.trim().is_empty() {
        return None;
    }

    let mut module = context.new_module("singularity");
    let config = SingularityConfig::try_load(module.config);

    module.get_prefix().set_value(config.label);
    module.set_style(config.style);
    module.create_segment("symbol", &config.symbol);

    let env_var_stacked = format!("{}{}{}", config.prefix, singularity_env, config.suffix);
    module.create_segment("singularity", &SegmentConfig::new(&env_var_stacked));

    Some(module)
}
<reponame>keob/leetcode_rs<filename>src/leetcode/solution231_rs.rs
pub struct Solution;

impl Solution {
    pub fn is_power_of_two(n: i32) -> bool {
        n > 0 && (n & (n - 1) == 0)
    }
}

#[cfg(test)]
mod tests {
    use super::Solution;

    #[test]
    fn test_1() {
        assert_eq!(Solution::is_power_of_two(1), true);
    }

    #[test]
    fn test_2() {
        assert_eq!(Solution::is_power_of_two(16), true);
    }

    #[test]
    fn test_3() {
        assert_eq!(Solution::is_power_of_two(3), false);
    }

    #[test]
    fn test_4() {
        assert_eq!(Solution::is_power_of_two(4), true);
    }

    #[test]
    fn test_5() {
        assert_eq!(Solution::is_power_of_two(5), false);
    }
}
<gh_stars>0
//! Core types used by the [xi-core protocol].
//!
//! The protocol used by the core is very similar to [JSON-RPC]. It is tempting to write these
//! types so that they use [`serde_json::Value`] internally, and then later deserialize the values
//! into the types they represent, but this incurs a significant overhead. Instead, these types are
//! written as close to the JSON representation as possible. This makes matching on the
//! [`Message`], more awkward, but it ensures that there is only a single deserialization step.
//!
//! [xi-core protocol]: htt


[21.81371840885574,47.08152195683803],[21.798911730092115,47.08526390405745],[21.792759654059473,47.10697950292771],[21.79141848529994,47.12400609374264],[21.798500441422263,47.12790351917103],[21.81064404645128,47.16253450555254],[21.817372400431026,47.17274600299826],[21.83874492522419,47.17722321947993],[21.858055942188493,47.187024869579034]]]},"properties":{"countyId":"Borș", "scoring":"1","procente":"
Populatie: 4254
 Total consilieri: 13
 Procent USRPLUS: 7.73%
 Necesar consilieri USRPLUS: 1
 Necesar rotunjit: 1" }},
       {"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[22.07350001436311,47.19703412271722],[22.093577101476598,47.16752709293234],[22.097209475345224,47.15748943952653],[22.106634881152182,47.14916510982597],[22.12643287242449,47.154160055615584],[22.1386563413023,47.14016878080989],[22.13916477899539,47.126716408805905],[22.103497541470603,47.13094881827516],[22.0673839535869,47.11526008750725],[22.0398814590967,47.12474142798874],[22.01921001830672,47.12503383167567],[22.01191042014936,47.12799732705827],[21.972344250686916,47.12615058383068],[21.96876691829647,47.13376691443305],[21.96873317144201,47.14987903701549],[21.976100422503794,47.16492360200079],[22.00024822899424,47.17201154022738],[22.002449171677938,47.18182750802619],[22.04533424139809,47.1876346939931],[22.07350001436311,47.19703412271722]]]},"properties":{"countyId":"Cetariu", "scoring":"0","procente":"
Populatie: 2162
 Total consilieri: 11
 Procent USRPLUS: 6.81%
 Necesar consilieri USRPLUS: 0.75
 Necesar rotunjit: 0" }},
       {"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[21.961883075093386,47.1902581250755],[21.98027876101369,47.18204348936424],[22.002449171677938,47.18182750802619],[22.00024822899424,47.17201154022738],[21.976100422503794,47.16492360200079],[21.96873317144201,47.14987903701549],[21.96876691829647,47.13376691443305],[21.94083492559446,47.12793974188111],[21.926161041047653,47.11643334485322],[21.9176906385391,47.12264034345109],[21.899983387690384,47.127037641710565],[21.876451507230097,47.14151673672812],[21.852761228900214,47.140040544028814],[21.861082581744963,47.14816713228212],[21.852155551544104,47


d0d0d0; }
#vt100 .ansi253   { color:            #dadada; }
#vt100 .ansi254   { color:            #e4e4e4; }
#vt100 .ansi255   { color:            #eeeeee; }

/* SYSTEM colors */
#vt100 .bgAnsiDef {                            }
#vt100 .bgAnsiDefR {                            }

#vt100 .bgAnsi0   { background-color: #000000; }
#vt100 .bgAnsi1   { background-color: #cd0000; }
#vt100 .bgAnsi2   { background-color: #00cd00; }
#vt100 .bgAnsi3   { background-color: #cdcd00; }
#vt100 .bgAnsi4   { background-color: #0000ee; }
#vt100 .bgAnsi5   { background-color: #cd00cd; }
#vt100 .bgAnsi6   { background-color: #00cdcd; }
#vt100 .bgAnsi7   { background-color: #e5e5e5; }
#vt100 .bgAnsi8   { background-color: #7f7f7f; }
#vt100 .bgAnsi9   { background-color: #ff0000; }
#vt100 .bgAnsi10  { background-color: #00ff00; }
#vt100 .bgAnsi11  { background-color: #e8e800; }
#vt100 .bgAnsi12  { background-color: #5c5cff; }
#vt100 .bgAnsi13  { background-color: #ff00ff; }
#vt100 .bgAnsi14  { background-color: #00ffff; }
#vt100 .bgAnsi15  { background-color: #ffffff; }

/* XTERM colors - 256 color mode */
#vt100 .bgAnsi16  { background-color: #000000; }
#vt100 .bgAnsi17  { background-color: #00005f; }
#vt100 .bgAnsi18  { background-color: #000087; }
#vt100 .bgAnsi19  { background-color: #0000af; }
#vt100 .bgAnsi20  { background-color: #0000d7; }
#vt100 .bgAnsi21  { background-color: #0000ff; }
#vt100 .bgAnsi22  { background-color: #005f00; }
#vt100 .bgAnsi23  { background-color: #005f5f; }
#vt100 .bgAnsi24  { background-color: #005f87; }
#vt100 .bgAnsi25  { background-color: #005faf; }
#vt100 .bgAnsi26  { background-color: #005fd7; }
#vt100 .bgAnsi27  { background-color: #005fff; }
#vt100 .bgAnsi28  { background-color: #008700; }
#vt100 .bgAnsi29  { background-color: #00875f; }
#vt100 .bgAnsi30  { background-color: #008787; }
#vt100 .bgAnsi31  { background-color: #0087af; }
#vt100 .bgAnsi32  { background-color: #0087d7; }
#vt100 .bgAnsi33  { background-color: #0087ff; }
#vt100 .bgAnsi34  { background-color: #00af00; }
#vt100 .bgAnsi35  { background-color: #00af5f; }
#vt100 .bgAnsi36  { background-color: #00af87; }
#vt100 .bgAnsi37  { background-color: #00afaf; }
#vt100 .bgAnsi38  { background-color: #00afd7; }
#vt100 .bgAnsi39  { background-color: #00afff; }
#vt100 .bgAnsi40  { background-c


t,
    pub p3: xcb_render_pointfix_t,
}

impl Default for xcb_render_triangle_t {
    fn default() -> Self {
        unsafe { std::mem::MaybeUninit::zeroed().assume_init() }
    }
}

/// An iterator over `Render::TRIANGLE` objects.
#[derive(Copy, Clone, Debug)]
#[repr(C)]
pub struct xcb_render_triangle_iterator_t {
    /// The value of the current iteration.
    pub data: *mut xcb_render_triangle_t,
    /// The number of elements remaining including this one.
    pub rem: c_int,
    /// The offset of `data`, in bytes, from the start of the containing object.
    pub index: c_int,
}

impl Default for xcb_render_triangle_iterator_t {
    fn default() -> Self {
        unsafe { std::mem::MaybeUninit::zeroed().assume_init() }
    }
}

/// The `Render::TRAPEZOID` struct.
#[derive(Copy, Clone, Debug)]
#[repr(C)]
pub struct xcb_render_trapezoid_t {
    pub top: xcb_render_fixed_t,
    pub bottom: xcb_render_fixed_t,
    pub left: xcb_render_linefix_t,
    pub right: xcb_render_linefix_t,
}

impl Default for xcb_render_trapezoid_t {
    fn default() -> Self {
        unsafe { std::mem::MaybeUninit::zeroed().assume_init() }
    }
}

/// An iterator over `Render::TRAPEZOID` objects.
#[derive(Copy, Clone, Debug)]
#[repr(C)]
pub struct xcb_render_trapezoid_iterator_t {
    /// The value of the current iteration.
    pub data: *mut xcb_render_trapezoid_t,
    /// The number of elements remaining including this one.
    pub rem: c_int,
    /// The offset of `data`, in bytes, from the start of the containing object.
    pub index: c_int,
}

impl Default for xcb_render_trapezoid_iterator_t {
    fn default() -> Self {
        unsafe { std::mem::MaybeUninit::zeroed().assume_init() }
    }
}

/// The `Render::GLYPHINFO` struct.
#[derive(Copy, Clone, Debug)]
#[repr(C)]
pub struct xcb_render_glyphinfo_t {
    pub width: u16,
    pub height: u16,
    pub x: i16,
    pub y: i16,
    pub x_off: i16,
    pub y_off: i16,
}

impl Default for xcb_render_glyphinfo_t {
    fn default() -> Self {
        unsafe { std::mem::MaybeUninit::zeroed().assume_init() }
    }
}

/// An iterator over `Render::GLYPHINFO` objects.
#[derive(Copy, Clone, Debug)]
#[repr(C)]
pub struct xcb_render_glyphinfo_iterator_t {
    /// The value of the current iteration.
    pub data: *mut xcb_render_glyphinfo_t,
    /// The number of elements remaining including this one.
    pub rem: c_int,
    /// The offset of `data`, in bytes, from the start of the containing object.
    pub index: c_int,
}

impl Default for xcb_render_glyphinfo_iterator_t {
    fn default() -> Self {
        unsafe { std::mem::MaybeUninit::zeroed().assume_init() }
    }
}

/// The cookie for the reply to a `Render::QueryVersion` request.
///
/// Pass this cookie to [`xcb_render_query_version_reply`] to retrieve the reply.
///
/// [`xcb_render_query_version_reply`]: Xcb


are
     * not in bounds.
     * @param x         The X coordinate of the upper left pixel location
     * @param y         The Y coordinate of the upper left pixel location
     * @param w         The width of the pixel rectangle
     * @param h         The height of the pixel rectangle
     * @param b         The band to set
     * @param iArray    The input sample array
     * @param data      The DataBuffer containing the image data
     * @see #getSamples(int, int, int, int, int, int[], DataBuffer)
     */
    public void setSamples(int x, int y, int w, int h, int b,
                           int iArray[], DataBuffer data) {
        // Bounds check for 'b' will be performed automatically
        if ((x < 0) || (y < 0) || (x + w > width) || (y + h > height)) {
            throw new ArrayIndexOutOfBoundsException
                ("Coordinate out of bounds!");
        }
        int lineOffset = y*scanlineStride + x + bandOffsets[b];
        int srcOffset = 0;
        int bank = bankIndices[b];

        for (int i = 0; i < h; i++) {
           int sampleOffset = lineOffset;
           for (int j = 0; j < w; j++) {
              data.setElem(bank, sampleOffset++, iArray[srcOffset++]);
           }
           lineOffset += scanlineStride;
        }
    }

    private static int[] createOffsetArray(int numBands) {
        int[] bandOffsets = new int[numBands];
        for (int i=0; i < numBands; i++) {
            bandOffsets[i] = 0;
        }
        return bandOffsets;
    }

    private static int[] createIndicesArray(int numBands) {
        int[] bankIndices = new int[numBands];
        for (int i=0; i < numBands; i++) {
            bankIndices[i] = i;
        }
        return bankIndices;
    }

    // Differentiate hash code from other ComponentSampleModel subclasses
    public int hashCode() {
        return super.hashCode() ^ 0x2;
    }
}
/*
 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

/*
 **********************************************************************
 **********************************************************************
 **********************************************************************
 *** COPYRIGHT (c) Eastman Kodak Company, 1997                      ***
 *** As  an unpublished  work pursuant to Title 17 of the United    ***
 *** States Code.  All rights reserved.                             ***
 **********************************************************************
 **********************************************************************
 **********************************************************************/

package java.awt.color;

import sun.java2d.cmm.Profile;
import sun.java2d.cmm.ProfileDeferralInfo;

/**
 *
 * The ICC_ProfileRGB class is a subclass of the ICC_Profile class
 * that represents profiles which meet the following criteria:
 *

 *
The profile's color space type is RGB.

 *
The profile includes the redColorantTag,
 * greenColorantTag, blueColorantTag,
 * redTRCTag, greenTRCTag,
 * blueTRCTag, and mediaWhitePointTag tags.

 *

 * The ICC_Profile getInstance method will
 * return an ICC_ProfileRGB object when these conditions are met.
 * Three-component, matrix-based input profiles and RGB display profiles are
 * examples of this type of profile.
 *

 * This profile class provides color transform matrices and lookup tables
 * that Java or native methods can use directly to
 * optimize color conversion in some cases.
 *

 * To transform from a device profile color space to the CIEX


 scratchpad);

    let a = U64p::from(&keccac[..16]) ^ U64p::from(&keccac[32..48]);
    let b = U64p::from(&keccac[16..32]) ^ U64p::from(&keccac[48..64]);

    main_loop(a, b, scratchpad);

    finalize_state(keccac, &scratchpad);
}

fn init_scratchpad(keccac: &[u8], scratchpad: &mut [u8]) {
    let round_keys_buffer = derive_key(&keccac[..32]);

    let mut blocks = [0u8; 128];
    blocks.copy_from_slice(&keccac[64..192]);

    for scratchpad_chunk in scratchpad.chunks_exact_mut(blocks.len()) {
        for block in blocks.chunks_exact_mut(16) {
            for key in round_keys_buffer.chunks_exact(16) {
                aes_round(block, key);
            }
        }

        scratchpad_chunk.copy_from_slice(&blocks);
    }
}

fn main_loop(mut a: U64p, mut b: U64p, scratchpad: &mut [u8]) {
    // Cast to u128 for easier handling. Scratch pad is only used in 16 byte blocks
    let scratchpad: &mut [U64p] = unsafe { cast_mut(scratchpad) };

    for _ in 0..ROUNDS {
        // First transfer
        let address: usize = a.into();
        aes_round(&mut scratchpad[address].as_mut(), a.as_ref());
        let tmp = b;
        b = scratchpad[address];
        scratchpad[address] = scratchpad[address] ^ tmp;

        // Second transfer
        let address: usize = b.into();
        let tmp = a + b * scratchpad[address];
        a = scratchpad[address] ^ tmp;
        scratchpad[address] = tmp;
    }
}

fn finalize_state(keccac: &mut [u8], scratchpad: &[u8]) {
    let round_keys_buffer = derive_key(&keccac[32..64]);
    let final_block = &mut keccac[64..192];
    for scratchpad_chunk in scratchpad.chunks_exact(128) {
        xor(final_block, scratchpad_chunk);
        for block in final_block.chunks_exact_mut(16) {
            for key in round_keys_buffer.chunks_exact(16) {
                aes_round(block, key);
            }
        }
    }
}

fn multiplicative_inverse(b: u8) -> u8 {
    if b <= 1 {
        b
    } else {
        ANTI_LOG_LOOKUP[255 - LOG_LOOKUP[b as usize] as usize]
    }
}

fn s_box(c: u8) -> u8 {
    let b = multiplicative_inverse(c);
    b.bitxor(b.rotate_left(1))
        .bitxor(b.rotate_left(2))
        .bitxor(b.rotate_left(3))
        .bitxor(b.rotate_left(4))
        .bitxor(0x63)
}

/// Optimized version of gmul for multiplying by two
#[inline]
fn gmul2(a: u8) -> u8 {
    let h = !(a >> 7).wrapping_sub(1);

    (a << 1) ^ (0x1B & h)
}

/// SubBytes step
fn sub_bytes(block: &mut [u8]) {
    for c in block.iter_mut() {
        *c = s_box(*c)
    }
}

/// ShiftRows step
fn shift_rows(block: &mut [u8]) {
    // Row 0 doesn't move
    // Swap row 1
    let tmp = block[1]


��围内敌人造成主属性x50魔法伤害\r\n觉醒:\r\n敏捷提高1250，每秒恢复生命值10%，持续7.5秒非拳师职业触发时，持续时间内触发尺牍惩戒所需攻击次数减少至4。冷却时间：15秒',
  '碎魔 绝望之戒':
    '寒岚打击：\r\n使目标受到魔法伤害提高7.5％（B型），持续12秒\r\n诅咒：\r\n主动对带有被动效果的敌人使用对目标造成最大生命值x1.25％通用伤害，并使受到伤害提高5%，持续2秒。冷却时间：30秒',
  '末路 圣裁者':
    '圣裁子弹：\r\n下次攻击附加（攻击力x600%+敏捷x50）魔法伤害并造成0.25秒眩晕。最多充能3次',
  '破穹 勇敢之心':
    '勇气：\r\n恢复自身40%最大生命值，周围600范围内友军恢复20%最大生命值，眩晕600范围内敌方单位1.5秒。冷却时间：40秒',
  '修正 除魔者':
    '魔王追逐：\r\n破坏护盾效果并造成（敏捷x250+最大生命值x7.5%）魔法伤害。冷却时间：75秒',
  '绝息 爆破背包':
    '投掷炸弹：\r\n将炸弹安置到目标位置当敌人接近或降落时触发轰炸，造成力量x30魔法伤害，会触发400范围的连锁爆炸连锁爆炸时增加0.5秒的眩晕效果，每多一轮轰炸增加100％的伤害（最多400%）。最多可同时安放10个炸弹。冷却时间：2秒',
  '归寂 荆棘铠甲':
    '荆棘之刺：\r\n对附近325范围内的敌人造成相当于最大生命值x2000％的魔法伤害。攻击力提高5000，持续2.5秒。冷却时间：7.5秒\r\n累积伤害后可强化下次使用的地狱之刺\r\n累积受到伤害达到最大生命值x100％的伤害时触发强化，每次收到伤害最多充能50%。主动强化对附近650范围内的敌人造成最大生命值x5000％的魔法伤害，并眩晕2秒使用强化后5秒方可进行下一次伤害累积',
  '破邪 苍穹统治者':


    }
    l5_7.gg[11] = 1.;
    l20_6.lex = true;
    l20_6.nex = 1;
    l20_6.fex = -.44;
    l20_6.xex[0] = 0.;
    l20_6.xex[1] = 1.;
    l20_6.xex[2] = 2.;
    l20_6.xex[3] = -1.;
    return 0;
labelL2:
/* Computing 2nd power */
    d__1 = l2_3.x[0];
/* Computing 2nd power */
    d__2 = l2_3.x[1];
/* Computing 2nd power */
    d__3 = l2_3.x[2];
/* Computing 2nd power */
    d__4 = l2_3.x[3];
    l6_1.fx = (d__1 * d__1 + d__2 * d__2 + d__3 * d__3 * 2. + d__4 * d__4 -
        l2_3.x[0] * 5. - l2_3.x[1] * 5. - l2_3.x[2] * 21. + l2_3.x[3] *
        7.) * (float).01;
    return 0;
labelL3:
    l4_3.gf[0] = (l2_3.x[0] * 2. - 5.) * (float).01;
    l4_3.gf[1] = (l2_3.x[1] * 2. - 5.) * (float).01;
    l4_3.gf[2] = (l2_3.x[2] * 4. - 21.) * (float).01;
    l4_3.gf[3] = (l2_3.x[3] * 2. + 7.) * (float).01;
    return 0;
labelL4:
    if (l9_4.index1[0]) {
/* Computing 2nd power */
    d__1 = l2_3.x[0];
/* Computing 2nd power */
    d__2 = l2_3.x[1];
/* Computing 2nd power */
    d__3 = l2_3.x[2];
/* Computing 2nd power */
    d__4 = l2_3.x[3];
    l3_3.g[0] = 8. - d__1 * d__1 - d__2 * d__2 - d__3 * d__3 - d__4 *
        d__4 - l2_3.x[0] + l2_3.x[1] - l2_3.x[2] + l2_3.x[3];
    }
    if (l9_4.index1[1]) {
/* Computing 2nd power */
    d__1 = l2_3.x[0];
/* Computing 2nd power */
    d__2 = l2_3.x[1];
/* Computing 2nd power */
    d__3 = l2_3.x[2];
/* Computing 2nd power */
    d__4 = l2_3.x[3];
    l3_3.g[1] = 9. - d__1 * d__1 - d__2 * d__2 * 2. - d__3 * d__3 - d__4 *
         d__4 * 2. + l2_3.x[0] + l2_3.x[3];
    }
    if (l9_4.index1[2]) {
/* Computing 2nd power */
    d__1 = l2_3.x[0];
/* Computing 2nd power */
    d__2 = l2_3.x[1];
/* Computing 2nd power */
    d__3 = l2_3.x[2];
    l3_3.g[2] = 5. - d__1 * d__1 * 2. - d__2 * d__2 - d__3 * d__3 -
        l2_3.x[0] * 2. + l2_3.x[1] + l2_3.x


this.loseIncomingCall(callId);
	}

	private loseIncomingCall(callId: string): void {
		const lostCall = this.incomingDirectCalls.get(callId);
		if (!lostCall) {
			debug && console.warn(`[VideoConf] Unable to cancel ${callId} because we have no information about it.`);
			return;
		}

		this.removeIncomingCall(callId);

		debug && console.log(`[VideoConf] Call ${callId} from ${lostCall.uid} was lost.`);
		this.emit('direct/lost', { callId, uid: lostCall.uid, rid: lostCall.rid });
	}

	private removeIncomingCall(callId: string): void {
		if (!this.incomingDirectCalls.has(callId)) {
			return;
		}

		const isRinging = this.isRinging();

		const callData = this.incomingDirectCalls.get(callId);
		if (callData?.timeout) {
			clearTimeout(callData.timeout);
		}

		this.incomingDirectCalls.delete(callId);
		this.emit('incoming/changed');

		if (isRinging !== this.isRinging()) {
			this.emit('ringing/changed');
		}
	}

	private createAbortTimeout(callId: string): number {
		return setTimeout(() => this.abortIncomingCall(callId), CALL_TIMEOUT) as unknown as number;
	}

	private startNewIncomingCall({ callId, uid, rid }: DirectCallParams): void {
		if (this.isCallDismissed(callId)) {
			debug && console.log(`[VideoConf] Ignoring dismissed call.`);
			return;
		}

		// Reject any currently ringing call from the user before registering the new one.
		this.rejectIncomingCallsFromUser(uid);

		debug && console.log(`[VideoConf] Storing this new call information.`);
		this.incomingDirectCalls.set(callId, {
			callId,
			uid,
			rid,
			timeout: this.createAbortTimeout(callId),
		});

		this.emit('incoming/changed');
		this.emit('ringing/changed');
		this.emit('direct/ringing', { callId, uid, rid });
	}

	private refreshExistingIncomingCall({ callId, uid, rid }: DirectCallParams): void {
		const existingData = this.incomingDirectCalls.get(callId);
		if (!existingData) {
			throw new Error('Video Conference Manager State Error');
		}

		debug && console.log(`[VideoConf] Resetting call timeout.`);
		if (existingData.timeout) {
			clearTimeout(existingData.timeout);
		}
		existingData.timeout = this.createAbortTimeout(callId);

		if (!this.isCallDismissed(callId)) {
			this.emit('direct/ringing', { callId, uid, rid });
		}
	}

	private onDirectCall({ callId, uid, rid }: DirectCallParams): void {
		// If we already accepted this call, then don't ring again
		if (this.incomingDirectCalls.get(callId)?.acceptTimeout) {
			return;
		}

		debug && console.log(`[VideoConf] User ${uid} is ringing with call ${callId}.`);
		if (this.incomingDirectCalls.has(callId)) {
			this.refreshExistingIncomingCall({ callId, uid, rid });
		} else {
			this.startNewIncomingCall({ callId, uid, rid });
		}
	}

	private onDirectCallCanceled({ callId }: DirectCallParams): void {
		debug && console.log(`[VideoConf] Call ${callId} was canceled by the remote user.`);

		// We had just accepted this call, but the remote user hang up before they got the notification, so cancel our acceptance
		const callData = this.incomingDirectCalls.get(callId);
		if (callData?.acceptTimeout) {
			clearTimeout(callData.acce


adc_remove(struct platform_device *pdev)
{
	struct iio_dev *indio_dev = platform_get_drvdata(pdev);
	struct lpc18xx_adc *adc = iio_priv(indio_dev);

	iio_device_unregister(indio_dev);

	writel(0, adc->base + LPC18XX_ADC_CR);
	clk_disable_unprepare(adc->clk);
	regulator_disable(adc->vref);

	return 0;
}

static const struct of_device_id lpc18xx_adc_match[] = {
	{ .compatible = "nxp,lpc1850-adc" },
	{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, lpc18xx_adc_match);

static struct platform_driver lpc18xx_adc_driver = {
	.probe	= lpc18xx_adc_probe,
	.remove	= lpc18xx_adc_remove,
	.driver	= {
		.name = "lpc18xx-adc",
		.of_match_table = lpc18xx_adc_match,
	},
};
module_platform_driver(lpc18xx_adc_driver);

MODULE_DESCRIPTION("LPC18xx ADC driver");
MODULE_AUTHOR("Joachim Eastwood <manabian@gmail.com>");
MODULE_LICENSE("GPL v2");


 async {
                  ref.read(globalDialogRiverpod).hidden();
                  await Future.delayed(const Duration(milliseconds: 300));
                  ref.read(globalDialogRiverpod).clean();
                }, child: const Text("取消"))
              ]
            ).show();
          } else {
            //_displayBar(title: "提示", text: "账号已存在", severity: InfoBarSeverity.warning);
            setState(() {});
          }
        }
      },
    );

    Widget selector = GameLaunchAccountsSelector(
      selectedIndex: _selectedIndex,
      onChanged: (value) {
        _selectedIndex = value;
        setState(() {});
      },
      deleteAction: (index) async {
        await SRCatGameAccountsLib.delete(uuid: _accountsList[index]["id"]);
        _accountsList = await SRCatGameAccountsLib.getAll();
        if (_selectedIndex != null) {
          if (index > _selectedIndex!) {
            _selectedIndex = (index - 1 >= 0) ? index - 1 : 0;
          } else if (index < _selectedIndex!) {
            _selectedIndex = _selectedIndex;
          } else if (index == _selectedIndex!) {
            _selectedIndex = null ;
          }
        }
        if (_accountsList.isEmpty) {
          _hasAccounts = false;
        }
        setState(() {});
      },
      renameAction: (index) {
        ref.read(globalDialogRiverpod).set("重命名账号",
          child: TextBox(
            placeholder: "重新为当前账号命名",
            onChanged: (value) {
              ref.read(gameLaunchPageRiverpod).setAccNewNickname(value);
            }
          ),
          actions: <Widget>[
            FilledButton(onPressed: () => _reNewNickname(_accountsList[index]["id"]), child: const Text("保存")),
            Button(onPressed: () async {
              ref.read(gameLaunchPageRiverpod).setAccNewNickname(null);
              ref.read(globalDialogRiverpod).hidden();
              await Future.delayed(const Duration(milliseconds: 300));
              ref.read(globalDialogRiverpod).clean();
            }, child: const Text("取消"))
          ]
        ).show();
      },
      items: _accountsList.map((value) => GameLaunchAccountsSelectorItem(
        uid: int.parse((value["uid"] ?? 0).toString()),
        uuid: value["id"],
        nickname: value["name"],
        sdkey: value["sdkey"],
      )).toList(),
    );

    return Column(
      children: <Widget>[checkAccount, _hasAccounts ? selector : Container()],
    );
  }

  Widget _fpsBox() {
    Widget infoBar = const InfoBar(
      title: Text("如果在游戏内点开设置将会使帧率设置降回 60FPS")
    );

    Widget card = SRCatCard(
      title: "帧率解锁",
      description: "直接修改注册表中的帧率设置，以此突破 60 帧限制（需要关闭垂直同步）",
      icon: FluentIcons.unlock,
      rightChild: Row(
        children: <Widget>[
          SizedBox(
            width: 140,
            child: NumberBox(
              min: 30,
              max: 1024,
              clearButton: false,
              value: int.parse((SRCatStorageUtils.read("hsr_game_fps") is int ? SRCatStorageUtils.read("hsr_game_fps") : 60).toString()),
              mode: SpinButtonPlacementMode.none,
              onChanged: (SRCatStorageUtils.read("hsr_game_fps_unlocked") == true) ? (int? value) {
                if (value != null &&


body>

                    <button data-dismiss="modal" class="close" type="button">×Close</button>

添加模块

                <form id="addForm" onsubmit="return false;" @submit="addModule_">

                                    模块名称

                                        <input style="width: 220px;" type="text" placeholder="请输入模块名称"
                                               class="form-control validate[required,maxSize[10]]" v-model="module.name">

                                    父节点

                                        <select id="addSelect" v-model="module.pid" class="validate[required]"></select>

                                    模块描述

                                        <input style="width: 400px;" type="text" placeholder="请输入模块描述"
                                               class="form-control validate[required]" v-model="module.desc">

                                    URL

                                        <input type="text" placeholder="请输入模块链接" class="form-control validate[required]"
                                               v-model="module.url">

                        <button class="btn btn-success" type="submit">提交</button>
                        <button data-dismiss="modal" class="btn btn-default" type="button">取消</button>

                </form>

                    <button data-dismiss="modal" class="close" type="button">×Close</button>

编辑模块

                <form id="updateForm" onsubmit="return false;" @submit="updateModule_(module.id)">

                                模块名称

                                    <input style="width: 220px;" type="text" placeholder="请输入模块名称" v-model="module.name"
                                           class="form-con


, the option enable-duplicate-filtering is overridden and set to true.
    #[serde(rename = "deploy-changed-only", skip_serializing_if = "Option::is_none")]
    pub deploy_changed_only: Option<bool>,
    /// A flag indicating whether the process engine should perform duplicate checking for the deployment or not. This allows you to check if a deployment with the same name and the same resouces already exists and if true, not create a new deployment but instead return the existing deployment. The default value is false.
    #[serde(rename = "enable-duplicate-filtering", skip_serializing_if = "Option::is_none")]
    pub enable_duplicate_filtering: Option<bool>,
    /// The name for the deployment to be created.
    #[serde(rename = "deployment-name", skip_serializing_if = "Option::is_none")]
    pub deployment_name: Option<String>,
    /// The binary data to create the deployment resource. It is possible to have more than one form part with different form part names for the binary data to create a deployment.
    #[serde(rename = "data", skip_serializing_if = "Option::is_none")]
    pub data: Option<std::path::PathBuf>,
}

impl MultiFormDeploymentDto {
    pub fn new() -> MultiFormDeploymentDto {
        MultiFormDeploymentDto {
            tenant_id: None,
            deployment_source: None,
            deploy_changed_only: None,
            enable_duplicate_filtering: None,
            deployment_name: None,
            data: None,
        }
    }
}

use std::iter::once;

use anyhow::{ensure, Result};
use itertools::Itertools;
use plonky2::field::extension_field::{Extendable, FieldExtension};
use plonky2::field::field_types::Field;
use plonky2::fri::verifier::verify_fri_proof;
use plonky2::hash::hash_types::RichField;
use plonky2::plonk::config::{GenericConfig, Hasher};
use plonky2::plonk::plonk_common::reduce_with_powers;

use crate::config::StarkConfig;
use crate::constraint_consumer::ConstraintConsumer;
use crate::permutation::PermutationCheckVars;
use crate::proof::{StarkOpeningSet, StarkProofChallenges, StarkProofWithPublicInputs};
use crate::stark::Stark;
use crate::vanishing_poly::eval_vanishing_poly;
use crate::vars::StarkEvaluationVars;

pub fn verify_stark_proof<
    F: RichField + Extendable<D>,
    C: GenericConfig<D, F = F>,
    S: Stark<F, D>,
    const D: usize,
>(
    stark: S,
    proof_with_pis: StarkProofWithPublicInputs<F, C, D>,
    config: &StarkConfig,
) -> Result<()>
where
    [(); S::COLUMNS]:,
    [(); S::PUBLIC_INPUTS]:,
    [(); C::Hasher::HASH_SIZE]:,
{
    ensure!(proof_with_pis.public_inputs.len() == S::PUBLIC_INPUTS);
    let degree_bits = proof_with_pis.proof.recover_degree_bits(config);
    let challenges = proof_with_pis.get_challenges(&stark, config, degree_bits);
    verify_stark_proof_with_challenges(stark, proof_with_pis, challenges, degree_bits, config)
}

pub(crate) fn verify_stark_proof_with_challenges<
    F: RichField + Extendable<D>,
    C: GenericConfig<D, F = F>,
    S: Stark<F, D>,
    const D: usize,
>(
    stark: S,
    proof_with_pi


alue)
} /* end H5T__vlen_reclaim() */

/*-------------------------------------------------------------------------
 * Function:	H5T_vlen_reclaim_elmt
 *
 * Purpose: Alternative method to reclaim any VL data for a buffer element.
 *
 *          Use this function when the datatype is already available, but
 *          the allocation info is needed from the context before jumping
 *          into recursion.
 *
 * Return:	Non-negative on success/Negative on failure
 *
 *-------------------------------------------------------------------------
 */
herr_t
H5T_vlen_reclaim_elmt(void *elem, const H5T_t *dt)
{
    H5T_vlen_alloc_info_t vl_alloc_info;       /* VL allocation info */
    herr_t                ret_value = SUCCEED; /* return value */

    assert(dt);
    assert(elem);

    FUNC_ENTER_NOAPI(FAIL)

    /* Get VL allocation info */
    if (H5CX_get_vlen_alloc_info(&vl_alloc_info) < 0)
        HGOTO_ERROR(H5E_DATATYPE, H5E_CANTGET, FAIL, "unable to retrieve VL allocation info");

    /* Recurse on buffer to free dynamic fields */
    if (H5T__vlen_reclaim(elem, dt, &vl_alloc_info) < 0)
        HGOTO_ERROR(H5E_DATATYPE, H5E_CANTFREE, FAIL, "can't reclaim vlen elements");

done:
    FUNC_LEAVE_NOAPI(ret_value)
} /* H5T_vlen_reclaim_elmt() */