package utf16le

import (
	
	
)

var (
	le = binary.LittleEndian
)

func ( string) int {
	 := 0
	for ,  := range  {
		if 0x10000 <=  &&  <= '\U0010FFFF' {
			 += 4
		} else {
			 += 2
		}
	}
	return 
}

func ( []byte,  string) int {
	 := utf16.Encode([]rune())
	for ,  := range  {
		le.PutUint16([2*:2*+2], )
	}
	return len() * 2
}

func ( string) []byte {
	if len() == 0 {
		return nil
	}
	 := utf16.Encode([]rune())
	 := make([]byte, len()*2)
	for ,  := range  {
		le.PutUint16([2*:2*+2], )
	}
	return 
}

func ( []byte) string {
	if len() == 0 {
		return ""
	}
	 := make([]uint16, len()/2)
	for  := range  {
		[] = le.Uint16([2* : 2*+2])
	}
	if len() > 0 && [len()-1] == 0 {
		 = [:len()-1]
	}
	return string(utf16.Decode())
}